execute() not working

I

iulian.ilea

Hello,

I have this code:
________________________________________________________

if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
________________________________________________________

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308

What should be the problem?
 
A

Anthony Jones

Hello,

I have this code:
________________________________________________________

if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
________________________________________________________

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308

What should be the problem?

The problem is your using Execute and Eval. Stop using them. Make inTotal
into an array then you don't need them. If arr(4, i1) returns a string then
use a Scripting.Dictionary object to store a name/value pairs.

Slap this in a VBS file and take a look at how it works:-

Dim arr_(2,2)
Dim temp
Dim Key
Dim i, j
Dim inTotal

For i = 0 to 2
arr_(0,i) = "ListOfValues" & i
arr_(1,i) = i
arr_(2,i) = i * 2
Next

Set inTotal = CreateObject("Scripting.Dictionary")

For i = LBound(arr_, 2) to UBound(arr_, 2)
temp = 0
For j = 1 To UBound(arr_, 1)
temp = temp + arr_(j, i)
Next
inTotal(arr_(0,i)) = inTotal(arr_(0,i)) + temp
Next

For Each Key In inTotal
MsgBox Key & " Total = " & inTotal(Key)
Next

Anthony.
 
I

iulian.ilea

I have to use those two (eval and execute), I have no other way to
resolve this because I can have 20 variables or more, just one or none.
So, obviously that I don't know what variables to define. I use option
explicit so it is mandatory to define them.

Another solution is to define an array with n elements (i.e.: arr(58))
and use only some of them (i.e.: arr(1), arr(32)) but in this case I
load in memory a full array. Is not a very good solution.

By the way: I made it work in the way I wanted.
 
A

Anthony Jones

I have to use those two (eval and execute), I have no other way to
resolve this because I can have 20 variables or more, just one or none.
So, obviously that I don't know what variables to define. I use option
explicit so it is mandatory to define them.

Another solution is to define an array with n elements (i.e.: arr(58))
and use only some of them (i.e.: arr(1), arr(32)) but in this case I
load in memory a full array. Is not a very good solution.

By the way: I made it work in the way I wanted.

Each to his own. But arr(58) would've been better it equates to ;ess than
1KB of memory and will significantly out perform Executes and Evals.
 
I

iulian.ilea

Anthony said:
Each to his own. But arr(58) would've been better it equates to ;ess than
1KB of memory and will significantly out perform Executes and Evals.

Anthony, if I use arr(n) is more efficiently than using execute("dim
var...") ?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top