我有一个相当大的 VB 脚本项目,其中主要脚本“包含”许多“库”,使用读取文件内容并ExecuteGlobal
在其上运行的标准技巧。一些库非常庞大,由各种第三方编写。
我想用Option Explicit
. 但是,如果我将其作为执行的第一行,其中一些库就会崩溃。但是,如果我将指令移到我的包含列表下方,我会Expected Statement
在该行遇到错误。更令人困惑的是,如果Option Explicit
出现在其中一个库的顶部(在它们列表的中间),一切都很好。但是,我想从任何库中删除(或注释掉)并且只在我的实现脚本中强制执行限制。
Option Explicit
关于必须出现在哪里的规则是什么?它必须是第一行吗?当我通过“包含”应用它时,为什么它不是第一行?我怎样才能实现我的目标?
代码示例:
Option Explicit ' CAUSES RUNTIME ERROR IN A LIBRARY
Sub Include( sRelativeFilePath )
Dim oFs : Set oFs = CreateObject("Scripting.FileSystemObject")
Dim sThisFolder : sThisFolder = oFs.GetParentFolderName( WScript.ScriptFullName )
Dim sAbsFilePath : sAbsFilePath = oFs.BuildPath( sThisFolder, sRelativeFilePath )
ExecuteGlobal oFs.openTextFile( sAbsFilePath ).readAll()
End Sub
Include ".\SomeLib.vbs"
Include ".\SomeOther.vbs"
Include ".\YetAnother.vbs"
VS
Sub Include( sRelativeFilePath )
Dim oFs : Set oFs = CreateObject("Scripting.FileSystemObject")
Dim sThisFolder : sThisFolder = oFs.GetParentFolderName( WScript.ScriptFullName )
Dim sAbsFilePath : sAbsFilePath = oFs.BuildPath( sThisFolder, sRelativeFilePath )
ExecuteGlobal oFs.openTextFile( sAbsFilePath ).readAll()
End Sub
Include ".\SomeLib.vbs"
Include ".\SomeOther.vbs"
Include ".\YetAnother.vbs"
Option Explicit ' CAUSES COMPILATION ERROR