Sideway BICK BlogSideway BICK BLOG from Sideway

A Sideway to Sideway Home

Link:http://output.to/sideway/default.asp?qno=180400009

Script, Scripting Language, VBScript elements, Server-Side VBScript Eval Function

VBScript Script Engine Functions

Functions for manipulating local of engine.

Eval Function

last updated 9/18/2017

Create a evaluation result from a given expression.

Syntax

Eval(expression)

Argument

expressionRequired. Any valid String expression of a legal VBScript.

Returns

Returns a Variant of data subtype according to the evaluation result to contain the evaluation result obtained from a given expression.

Remarks

  • Eval function can be used to simulate the execution of a legal VBScript expression by processing the VBScript expression as a String expression indirectly for increasing the flexibility.
  • In VBScript, x = y can be interpreted two ways. The first is as an assignment statement, where the value of y is assigned to x. The second interpretation is as an expression that tests if x and y have the same value. If they do, the result is True; if they are not, the result is False. The Eval method always uses the second interpretation, whereas the Execute statement always uses the first.
  • In Microsoft JScript, no confusion exists between assignment and comparison, because the assignment operator (=) is different from the comparison operator (==).

Requirement

5

Examples

Examples of Eval function

ASP VbScript Command:
<script runat="server" language="VBScript">
Dim vars,strs,cmda,var:var=0
cmda=array("strs","ans","Eval(""strs"")","Eval(strs)")
Dim ucnt,tmp,i:ucnt=UBound(cmda):If var=1 Then:tmp="":Else:tmp="<b>vars</b>":End If:For i=0 to ucnt:tmp=tmp&"<b>"&rmv_ctrl(cmda(i))&", TypeName</b>":Next:Response.Write "Results on Microsoft Windows 8.1 Pro x64, Microsoft-IIS/8.5, VBScript Version 5.8 of page /internet/users/sideblog/default.asp<br />"&"<i>"&tmp&"</i>"
Function dsp_x:Dim tmp_a,tmp_b,i:If varx=0  Then:Execute vars:End If:If var=1 Then:tmp_a="":Else:tmp_a=rmv_ctrl(vars):End If:For i=0 to ucnt:tmp_b=cmd_b(cmda(i)):if i/2=fix(i/2) Then:tmp_b="<b>"&tmp_b&"</b>":End If:tmp_a=tmp_a&tmp_b:Next:Response.Write "<i>"&tmp_a&"</i>":End Function
Function rmv_ctrl(blk_str):Select Case blk_str:Case chr(0):blk_str="NUL":Case chr(1):blk_str="SOH":Case chr(2):blk_str="STX":Case chr(3):blk_str="ETX":Case chr(4):blk_str="EOT":Case chr(5):blk_str="ENQ":Case chr(6):blk_str="ACK":Case chr(7):blk_str="BEL":Case chr(8):blk_str="BS":Case chr(9):blk_str="HT":Case chr(10):blk_str="LF":Case chr(11):blk_str="VT":Case chr(12):blk_str="FF":Case chr(13):blk_str="CR":Case chr(14):blk_str="SO":Case chr(15):blk_str="SI":Case chr(16):blk_str="DLE":Case chr(17):blk_str="DC1":Case chr(18):blk_str="DC2":Case chr(19):blk_str="DC3":Case chr(20):blk_str="DC4":Case chr(21):blk_str="NAK":Case chr(22):blk_str="SYN":Case chr(23):blk_str="ETB":Case chr(24):blk_str="CAN":Case chr(25):blk_str="EM":Case chr(26):blk_str="SUB":Case chr(27):blk_str="ESC":Case chr(28):blk_str="FS":Case chr(29):blk_str="GS":Case chr(30):blk_str="RS":Case chr(31):blk_str="US":Case chr(127):blk_str="DEL":End Select:rmv_ctrl=blk_str:If IsNull(blk_str) OR IsEmpty(Blk_str) OR blk_str="" OR IsNumeric(Blk_str) Then:Else:rmv_ctrl=Replace(Replace(Replace(Replace(Replace(blk_str,"&","&amp;"),"  "," &nbsp;"),"""","&quot;"),"<","&lt;"),">","&gt;"): End If :End Function
Function cmd_b(blk_str):cmd_b="["&cmd_x(blk_str)&"], "&cmd_x("TypeName("&blk_str&")"):End Function
Function cmd_x(blk_str):On Error Resume Next:Dim xans, tmp:xans="":tmp="":execute "xans="&blk_str:If Err.Number <> 0  Then:xans=cmd_x("TypeName("&blk_str&")"):Select Case xans:Case 9::Case Else:xans="error":End Select:End If:If IsArray(xans)=False Then:cmd_x=rmv_ctrl(xans): Else:tmp=lst_arry(xans):cmd_x=trim(tmp):End If:End Function
Function lst_arry(blk_str):Dim tmp,i,q:q="""":tmp="":For i=0 to UBound(blk_str):if VarType(blk_str(i))>1 And VarType(blk_str(i))<6 Then:q="'":End If:tmp=tmp&" "&q&rmv_ctrl(blk_str(i))&q:Next:lst_arry=trim(tmp):End Function

vars="strs=""a"":ans=Eval(strs)":dsp_x
vars="strs=""a=b""":ans=Eval(strs):dsp_x
vars="strs=""2+3"":ans=Eval(strs)":dsp_x
vars="strs=""a=a&b"":ans=Eval(strs)":dsp_x
vars="strs=""""""ab"""""":ans=Eval(strs)":dsp_x
vars="strs=log(1):ans=Eval(strs)":dsp_x
vars="strs=""log(1)"":ans=Eval(strs)":dsp_x
vars="Function reftest():reftest=""reftestok"":End Function:strs=Null:ans=""""":Execute vars:dsp_x
vars="strs=""reftest"":ans=Eval(strs)":dsp_x
vars="strs=""reftest"":Set ans=GetRef(strs)":dsp_x
vars="strs=""reftest"":ans=GetRef(strs)":dsp_x
vars="strs=""reftest"":ans=Eval(""GetRef(strs)"")":dsp_x
vars="strs=""GetRef(""""reftest"""")"":ans=Eval(strs)":dsp_x
</script>
HTML Web Page In-line Output:
Results on Microsoft Windows 8.1 Pro x64, Microsoft-IIS/8.5, VBScript Version 5.8 of page /internet/users/sideblog/default.asp
varsstrs, TypeNameans, TypeNameEval("strs"), TypeNameEval(strs), TypeNamestrs="a":ans=Eval(strs)[a], String[4/30/2018], Date[a], String[4/30/2018], Datestrs="a=b"[a=b], String[4/30/2018], Date[a=b], String[False], Booleanstrs="2+3":ans=Eval(strs)[2+3], String[5], Integer[2+3], String[5], Integerstrs="a=a&b":ans=Eval(strs)[a=a&b], String[False], Boolean[a=a&b], String[False], Booleanstrs="""ab""":ans=Eval(strs)["ab"], String[ab], String["ab"], String[ab], Stringstrs=log(1):ans=Eval(strs)[0], Double[0], Double[0], Double[0], Doublestrs="log(1)":ans=Eval(strs)[log(1)], String[0], Double[log(1)], String[0], DoubleFunction reftest():reftest="reftestok":End Function:strs=Null:ans=""[], Null[], String[], Null[], Nullstrs="reftest":ans=Eval(strs)[reftest], String[reftestok], String[reftest], String[reftestok], Stringstrs="reftest":Set ans=GetRef(strs)[reftest], String[reftestok], Object[reftest], String[reftestok], Stringstrs="reftest":ans=GetRef(strs)[reftest], String[reftestok], String[reftest], String[reftestok], Stringstrs="reftest":ans=Eval("GetRef(strs)")[reftest], String[reftestok], String[reftest], String[reftestok], Stringstrs="GetRef(""reftest"")":ans=Eval(strs)[GetRef("reftest")], String[reftestok], String[GetRef("reftest")], String[reftestok], Object

Sideway BICK Blog

09/04


Copyright © 2000-2020 Sideway . All rights reserved Disclaimerslast modified on 26 January 2013