VBScipt: Call builtin functions shadowed by global variables

别说谁变了你拦得住时间么 提交于 2019-12-11 15:48:51

问题


VBScript on ASP Classic contains an "int" function. (It rounds numbers towards -∞.) Suppose that some excessively "clever" coder has created a global variable named "int". Is there any way to get at the original function? I've tried all manner of workarounds with scoping and dodgy execs, but no dice. I suspect that it is impossible, but I'm hoping that someone will know more about it than I do.

EDIT: Thanks for the responses. Since y'all asked, the global variable, called "Int" (though unfortunately, vbscript is not case-sensitive), is a factory for a class similar to Java's Integer. The default property is essentially a one-arg constructor; i.e. "Int(42)" yields a new IntClass object holding 42. The default property of IntClass in turn simply returns the raw number.

The creator was trying to work around the lack of proper namespaces and static methods, and the solution's actually pretty seamless. Pass in an IntClass where an int is expected and it will automatically trigger the default property. I'm trying to patch the last remaining seam: that external code calling "int" will not round properly (because the constructor uses CLng).


回答1:


Not that I know of, getref only works on custom functions not on build-ins. I would suggest renaming the custom'int' function and update all references to this custom ones. You can use the search function visual studio (express) or any other tool of your liking for this. Shouldn't be to much work.




回答2:


I didn't think reserved words would be allowed for function names or variables.

Duncanson's right. Do the pain and rename int. Chances are there are worse things going on than just this.

(why would someone make a global variable named int... that's going to take some thinking)




回答3:


Or you can use CInt instead on Int

response.write trim(cint(3.14)) + "<br>"

Wrong!! See NobodyMan comments



来源:https://stackoverflow.com/questions/1642421/vbscipt-call-builtin-functions-shadowed-by-global-variables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!