2012-01-27 93 views
1

我已经为传统ASP(VBScript)+ firephp编写了一个开源调试类,并想知道是否可以获取已传递给函数的变量的名称?我已经搜索,但似乎无法找到任何技巧来做到这一点。获取变量名称经典ASP

代码:

log myVariable 

输出:

myVariable: "some value" 

任何想法?

+2

不用怕,你将不得不''登录“myVariable”,myVariable' – 2012-01-27 14:59:32

回答

3

我假设下面的代码片段说明您的情况:

​​

而且你希望你的函数知道变量XYZABC是否被用来调用函数?

答案是否定的,原因有两个。这种类型的参数调用是“按值调用”,即使它不是,它仍然没有vbscript内部的机制,因为它知道你通过它的原始变量名。

取而代之的变量你有没有想过使用的Dictionary Object

<% 
Dim cars 
Set cars = CreateObject("Scripting.Dictionary") 
cars.Add "a", "Alvis" 
cars.Add "b", "Buick" 
cars.Add "c", "Cadillac" 
Response.Write "The value corresponding to the key 'b' is " & cars.Item("b") 
%> 
+0

是啊,这就是我的想法。我只是想尽可能快速和简单地使日志记录功能。我仍然可以“记录”myvalue,“myvalue”只是稍微让人烦恼;) – 2012-01-27 16:37:58

0

你可以按照以下步骤

  1. 创建您想打印的名称 每个变量每个变量的新变量
  2. 将所需的变量名称保存为 相关新变量中的字符串
  3. 封装你的代码中有 双参数

下面是一个例子的功能,我使用了名为“move.bat”一个批处理文件来运行VBS:

Dim sFoldervarName 
sFoldervarName = "sfolder" 
Dim sFolder 
sFolder = "pippoplutopaperino" 

call varnamefunc(sFolder, sFoldervarName) 

Sub varnamefunc(arg1, arg2) 
    LF = chr(10) 
    Wscript.Echo("your variable name is:" + arg2 + LF + "your variable value is: " + arg1) 
End Sub 

这里是结果:

c:\Batch_DEV>move.bat 

your variable name is:sfolder 
your variable value is: pippoplutopaperino 

c:\Batch_DEV> 

通过这样做,您的函数将返回变量的名称以及变量值。 希望这有助于! 此致敬礼。

0

如果修改输入到功能位,就可以实现你的结果:

hello = "how do you do" 
log "hello" 

function log(x) 
    response.write x & ":" & eval(x) 
end function 

这是使用eval函数,将你的字符串“hello”翻译成变量打招呼。