我有以下代码。它的作用是它从属性文件中读取所有关键的值。
Function readProperties(fileName) Dim oFS : Set oFS = CreateObject( "Scripting.FileSystemObject" ) Dim dicProps : Set dicProps = CreateObject( "Scripting.Dictionary" ) Dim oTS : Set oTS = oFS.OpenTextFile( fileName ) Do Until oTS.AtEndOfStream Dim sLine : sLine = Trim( oTS.ReadLine ) 'Wscript.Echo sLine If "" sLine Then If not "#" = Left( sLine, 1 ) Then Dim aParts : aParts = Split( sLine, "=" ) If 1 UBound( aParts ) Then WScript.Echo oTS.Line, "bad property line", sLine Else 'Wscript.Echo "Adding: " & aParts( 0 ) &" => " & aParts( 1 ) dicProps( Trim( aParts( 0 ) ) ) = Trim( aParts( 1 ) ) 'WScript.Echo oTS.Line, "good property line", sLine End If End If End If Loop oTS.Close 'readProperties = dicProps Dim sKey For Each sKey In dicProps.Keys WScript.Echo sKey, "=>", dicProps( sKey ) Next End Function
奇怪的是,如果我将dicProps
的值分配给readProperties
,则代码将不再有效。
我错过了什么吗?
答案 0 :(得分:2)
使用
Set readProperties = dicProps
在处理对象时,您总是必须使用Set。
答案 1 :(得分:-1)
(没有足够的评论要点,因此发布为答案)
让我尝试从上面总结正确但有点混乱的答案:
Set objVar2 = objVar1
,而标量则指定为Var2 = Var1
。 BASIC方言放弃了曾经要求的 Let (Let Var2 = Var1
)以进行变量值分配。从方法(函数)返回值时,语法为FunctionName = Result
,遵循变量类型分配的规则,即
Function MyObject()
' Assign an object as the return value
Set MyObject = Result
End Function
Function MyScalar()
' Assign a scalar as the return value
MyScalar = Result
End Function