vbscript Eval a string to a Variable in a loop?

前端 未结 3 1813
梦如初夏
梦如初夏 2020-12-22 01:33

I am trying to use vbscript\'s Eval (or maybe I need Execute) to create some variables from the key names from an ini file. The ini file can have unlimited unknown key=val p

3条回答
  •  长情又很酷
    2020-12-22 01:51

    If you want to read key/value pairs from an INI file you'd be better off storing them in a dictionary. I wrote a function for this some years ago. Basically looks like this:

    Function ParseIni(filename)
      Set ParseIni = Nothing
    
      Set config = CreateObject("Scripting.Dictionary")
      section = ""
    
      Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile(filename)
      Do While Not file.AtEndOfStream
        line = Trim(Replace(file.ReadLine, vbTab, " "))
        If InStr(line, ";") > 0 Then line = Trim(Left(line, InStr(line, ";") - 1))
        If line <> "" Then
          If Left(line, 1) = "[" And Right(line, 1) = "]" Then
            ' line is a section name
            section = Trim(Mid(line, 2, Len(line) - 2))
            If section = "" Then _
              WScript.Echo "Parse Error: section name is empty string."
            If config.Exists(section) Then _
              WScript.Echo "Parse Error: duplicate section name '" & name & "'."
            config.Add section, CreateObject("Scripting.Dictionary")
          ElseIf InStr(line, "=") > 0 Then
            ' line is a parameter line
            If section = "" And Not config.Exists(section) Then _
              config.Add section, CreateObject("Scripting.Dictionary")
            param = Split(line, "=", 2)
            param(0) = Trim(param(0))
            param(1) = Trim(param(1))
            If param(0) = "" Then _
              WScript.Echo "Parse Error: invalid parameter name '" & param(0) & "'."
            If param(1) = "" Then param(1) = True
            config(section).Add param(0), param(1)
          Else
            ' line is neither parameter nor section name, thus invalid
            WScript.Echo "Parse Error: expected parameter definition in line '" _
              & line & "'."
          End If
        End If
      Loop
      file.Close
    
      Set ParseIni = config
    End Function
    

提交回复
热议问题