首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScriptControl的Eval方法有问题

ScriptControl的Eval方法有问题
EN

Stack Overflow用户
提问于 2013-06-26 04:45:38
回答 2查看 946关注 0票数 0

我在一个相当老的Classic ASP应用程序上有一些维护任务,当涉及到VBScript时,我有点不知所措……

我想知道是否可以使用MSScriptControl.ScriptControl对象的Eval方法来设置变量的值。还要注意,在这种情况下,在调用Eval()之前使用ScriptControl的AddCode方法是不可取的。以下是演示该问题的一些示例代码:

代码语言:javascript
复制
Dim so,rs,someVar
set someVar=...
set so=server.CreateObject("MSScriptControl.ScriptControl")
so.Language = "VBScript"
so.AllowUI = False
so.AddObject "someVar",someVar

' I get a syntax error here
rs = so.Eval(scrObject.Eval("set someVar = Nothing" & "set someVar = CreateObject("+Chr(34)+"Wscript.Shell"+Chr(34)+")" & "response.write(someVar.CurrentDirectory)"))

' if I try something like this I get a syntax error as well..
rs = so.Eval("Dim someVar2 : someVar2="+Chr(34)+"test"+Chr(34)+" : response.write(someVar2)")

我知道Eval方法是用来计算表达式的,而表达式并不是声明或设置变量值的最合理的地方,但我想知道它是否仍然可能以某种方式存在。

非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-06-26 04:55:58

eval和“邪恶”不只是听起来很像。不管怎样,你需要eval做什么?您应该能够直接使用代码:

代码语言:javascript
复制
Set someVar = Nothing
Set someVar = CreateObject("Wscript.Shell")
response.write(someVar.CurrentDirectory)

或者(甚至更简单)这样:

代码语言:javascript
复制
response.write CreateObject("Wscript.Shell").CurrentDirectory
票数 0
EN

Stack Overflow用户

发布于 2013-06-26 16:55:17

除了您的代码具有非法赋值之外,您还应该从使用&字符而不是+字符连接字符串开始:

代码语言:javascript
复制
rs = so.Eval(scrObject.Eval("set someVar = Nothing" & "set someVar = CreateObject(" & Chr(34) & "Wscript.Shell" & Chr(34) & ")" & "response.write(someVar.CurrentDirectory)"))

但现在您的输出将是如下所示的字符串:

代码语言:javascript
复制
set someVar = Nothingset someVar = CreateObject("Wscript.Shell")response.write(someVar.CurrentDirectory)

这不是有效的VBScript。您可以使用换行符(vbNewLine)来分隔不同的行,但使用分号更容易:

代码语言:javascript
复制
rs = so.Eval(scrObject.Eval("set someVar = Nothing : set someVar = CreateObject(" & Chr(34) & "Wscript.Shell" & Chr(34) & ") : response.write(someVar.CurrentDirectory)"))

但就像Ansgar Wiecher问的那样:你想要实现什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17307194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档