2012-12-03 83 views
1

我想完成以下操作:vbScript eval()與函數或子

比方說,我有一個函數myFunc(sStr)它返回一個值。

我想動態調用該函數,我相信我可以通過使用vbScript函數eval()或​​中的某個版本來完成該功能。

Function myFunc(fString) 
    myFunc = "some text in a string. " & fString 
End Function 

我要調用通過這樣的:

sDoThis = "response.write myFunc(""blah blah. "")" 
execute(sDoThis) 

這似乎並不工作(例如要執行,我傳遞字符串中的一部分)。

我需要被執行的字符串是動態的。

有誰知道如果/如何這是可能的?

+0

剛剛嘗試過你的代碼,它工作得很好。你的意思是「似乎不起作用」?你得到什麼錯誤?究竟發生了什麼?你有其他的東西導致這個問題。 –

+0

你是對的,我有其他問題。 – GWR

回答

5

您應該使用GetRef()獲得 '函數指針' 的VBScript的變種:

Option Explicit 

Function appendString(sAppend) 
    appendString = "constant head " & sAppend 
End Function 

Dim oFncPtr  : Set oFncPtr = GetRef("appendString") 
Dim sFullString : sFullString = oFncPtr("and variable tail") 

WScript.Echo sFullString 

輸出:

constant head and variable tail 

這避免了評估和演示的inefficience和安全風險()/執行。

+0

感謝您的回覆。我在問題中指出我需要動態調用函數。我不相信你的解決方案適應(也許我失去了一些東西)。 – GWR

+1

我想你會錯過一些東西(除非我錯過了某些東西)。函數名稱(appendString)以字符串形式提供。這是一個反思的電話。這不是動態的嗎? – mgr326639

0

暗影嚮導是正確的。我有一些其他的語法問題。它確實有效。感謝所有的幫助。