Forum Discussion
mes6073
11 years agoContributor
''' <Summary>ParseIniFileSections</Summary> ''' <Param Type="String">[ByVal] strFilePath</Param> ''' <Returns Type="Object">Scripting.Dictionary</Returns> ''' <Remarks>Parse Ini file and add string values for each ''' attribute parsed from each sub section of the specified ''' INI file to the dictionary object</Remarks> Function ParseIniFileSections(strFilePath) Dim dict : Set dict = Nothing Dim i, index, iniFile, subset, value, valueName If aqFileSystem.Exists(strFilePath) Then Set iniFile = Storages.INI(strFilePath) Set dict = CreateObject("Scripting.Dictionary") With iniFile ' parse each section of specified ini file For i = 0 To .SectionCount - 1 Set subset = .GetSubSectionByIndex(i) ' Parse/Read sub section attributes/values For index = 0 To subset.OptionCount - 1 valueName = subset.GetOptionName(index) value = subset.GetOption(valueName, "") Call dict.add(valueName, value) Next Next End With Else Log.Warning aqString.Format("[%s] - Path does not exist!") End If Set ParseIniFileSections = dict End Function ' ParseIniFileSections
An alternative is to use VBScript:
''' <summary>ReadIniFile</summary> ''' <params type="String">ByVal sFSpec</params> ''' <returns type="String">Scripting.Dictionary</returns> Function ReadIniFile(sFSpec) Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim dicTmp : Set dicTmp = CreateObject("Scripting.Dictionary") Dim tsIn : Set tsIn = fso.OpenTextFile(sFSpec, ForReading) Dim sLine, sSec, aKV Do Until tsIn.AtEndOfStream sLine = Trim(tsIn.ReadLine()) If Left(sLine, 1) = "[" Then sSec = Trim(Mid(sLine, 2, Len(sLine) - 2)) Set dicTmp(sSEc) = CreateObject("Scripting.Dictionary") Else 'If "" <> sLine Then If StrComp(sLine, "", 1) <> 0 Then aKV = Split(sLine, "=") If UBound(aKV) = 1 Then dicTmp(sSec)(Trim(aKV(0))) = Trim(aKV(1)) End If End If End If Loop tsIn.Close Set ReadIniFile = dicTmp Set fso = Nothing End Function ' ReadIniFile
- ChrisPro11 years agoContributor
I use JScript.
Is it more fast?