2012-01-27 4 views
1

Я написал класс отладки с открытым исходным кодом для классического ASP (VBScript) + firephp и хочу знать, можно ли получить имя переменной, переданной функции? Я искал, но не могу найти никаких трюков.Получить имя переменной Classic ASP

Пример

Код:

log myVariable 

выход:

myVariable: "some value" 

Любые идеи?

+2

Не бойтесь, вам придется «лог» myVariable », myVariable' –

ответ

3

Я предполагаю, что следующий фрагмент коды описывает свой сценарий:

Function myLog(myArg) 
    ... 
End Function 

Dim xyz, abc 
xyz = "some value" 
abc = "some value" 
myLog xyz 
myLog abc 

И вы хотите, чтобы ваша функцию, чтобы узнать, были ли использованы переменные XYZ или а для вызова функции?

Ответ на это не по двум причинам. Один из этих типов вызова аргументов - «вызов по значению», и даже если это не так, в 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

Да, это то, что я думал. Я просто хотел сделать функцию каротажа максимально быстрой и легкой. Я все еще могу «log» myvalue », myvalue', это немного более раздражает, чтобы напечатать;) –

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, которая переведет вашу строку «привет» в переменный привет.