After Parenthesis in ASP Variables - Query

L

ll

Hi,
I'm wondering about variable declaration in ASP - is there a good
resource for this? In naming variables, is there a way to include
characters in a variable name after the parenthesis/variable in a
loop? I have quite a few variables (e.g. strOut1_a, strOut2_a, etc)
and thought a loop would be the best way to do this, but I am getting
errors for the characters after the parenthesis. My code is below.
Thanks for any help or resources.
Louis
 
D

Drew

Use an array,

dim a, arrStrOut(2) 'Remember arrays are zero based
for a = 0 to UBound(arrStrOut)
arrStrOut(a) = a
response.write(arrStrOut(a))
next

Drew
 
B

Bob Barrows [MVP]

ll said:
Hi,
I'm wondering about variable declaration in ASP - is there a good
resource for this?

I can see why you had trouble finding one, given that you were treating
ASP as a language rather than what it really is: a "platform" which
supports several scripting languages, including vbscript. I'm sure if
you knew you had to find a vbscript reference you would have found this
http://msdn.microsoft.com/en-us/library/t0aew7h6(VS.85).aspx
or this:
http://www.microsoft.com/downloads/...48-207d-4be1-8a76-1c4099d7bbb9&DisplayLang=en
In naming variables, is there a way to include
characters in a variable name after the parenthesis/variable in a
loop?

After the parentheses? No. I'm not sure there is a language where this
is allowed. Certainly not VB, VBA or vbscript. With vbscript, the
parentheses contain, when declaring the array, the maximum index value
to be stored in the array, and when referring to an item within the
array, the index of the item.

Have a look in the documentation about declaring and using arrays in
vbscript.
 
D

Dave Anderson

ll said:
I'm wondering about variable declaration in ASP - is there a good
resource for this? In naming variables, is there a way to include
characters in a variable name after the parenthesis/variable in a
loop? I have quite a few variables (e.g. strOut1_a, strOut2_a, etc)
and thought a loop would be the best way to do this, but I am getting
errors for the characters after the parenthesis. My code is below.
Thanks for any help or resources.
Louis

-----------------------------------------
for a=1 to 3
strOut(a)_a=objComm("Out"&a&"_a")
response.write("Out"&a&"_a")
next

VBScript allows all kinds of funny variable names, provided you use
brackets. This is a valid expression:

[strOut(a)_a] = objComm("Out"&a&"_a")

It is not what you want, however, since it is merely a static variable name.


OTOH, you can probably get a little of what you want with JScript:

for (var ary=[],i=0; i<3; i++) {
ary.push({_a:eek:bjComm("Out"&a&"_a")}
Response.Write(ary._a)
}
 
O

Old Pedant

First of all, there's no reason you couldn't put the suffix *BEFORE* the
parentheses:
-----------------------------------------
for a=1 to 3
strOut_a(a) = objComm("Out"&a&"_a")
next

But if you mean that you want *properties* on a SINGLE indexed variable of
an array...sure, you can do that. Using a VBScript class.

Silly (and not overly well formed) example, just to get the point across:

<%
Class Person
Private mName, mEmail

Public Sub Init( name, email )
me.mName = name
ne.mEmail = email
End Sub

Public Property Get Name( )
Name = me.mName
End Property
Public Property Get EMail( )
EMail = me.mEmail
End Property
End Class

Dim people( 10 )

Set people(3) = New Person
people(3).Init( "Adam", "(e-mail address removed)")
Set people(7) = New Person
people(7).Init("Joe","(e-mail address removed)")

....
x = 7

Response.Write people(x).Name & " has email address " & people(x).Email
....
%>

Is *THAT* what you are after?
 
B

Bob Barrows [MVP]

Old said:
First of all, there's no reason you couldn't put the suffix *BEFORE*
the parentheses:
-----------------------------------------
for a=1 to 3
strOut_a(a) = objComm("Out"&a&"_a")
next

But if you mean that you want *properties* on a SINGLE indexed
variable of an array...sure, you can do that. Using a VBScript class.

Silly (and not overly well formed) example, just to get the point
across:

Now that was more helpful than my reply was. Thanks a lot for stepping in.
 
L

ll

Now that was more helpful than my reply was. Thanks a lot for stepping in.

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"



Thanks for all your help - this has helped immensely!
 
L

ll

Thanks for all your help - this has helped immensely!


One more (hopefully quick) question... within the loops as shown in
my code, does each variable created (e.g. strOutP1, strOutP2, etc)
retain its value, or is an array needed for this?
Thanks again,
Louis
 
O

Old Pedant

One more (hopefully quick) question... within the loops as shown in
my code, does each variable created (e.g. strOutP1, strOutP2, etc)
retain its value, or is an array needed for this?

Ummm...."loops"??? You only show ONE loop there.

And you don't show *ANY* variables name strOutP1 or strOutP2 or anything
similar to that.

What in the heck are you talking about??? Maybe code you didn't show us?
 
L

ll

Ummm...."loops"??? You only show ONE loop there.

And you don't show *ANY* variables name strOutP1 or strOutP2 or anything
similar to that.

What in the heck are you talking about??? Maybe code you didn't show us?



Sorry for the confusion - allow me to just start from the beginning,
which might be easier. I have a set of variables
(strOut1_a....to...strOut15_a).
I'm looking for a way to loop through these variable names to
establish their values, such as:

strOut1_a = objComm("Out1_a")

but with a loop, rather than writing out each.
Many thanks again,
Louis
 
O

Old Pedant

Sorry for the confusion - allow me to just start from the beginning,
which might be easier. I have a set of variables
(strOut1_a....to...strOut15_a).
I'm looking for a way to loop through these variable names to
establish their values, such as:

strOut1_a = objComm("Out1_a")

No, you do *NOT* want to do that. As a couple of people pointed out.

You WANT TO USE AN ARRAY.

Dim strOut_a(15)
For i = 1 To 15
strOut_a(i) = objComm("Out" & i & "_a")
Next

And then, where your *OTHER* code *WAS* using
strOut7_a
or whatever, you simply use
strOut_a(7)

What is wrong with that solution??

Now, there *IS* a way to do what you claimed to want. But it is slow slow
slow and clumsy and is not good programming practice and...well, the list
goes on. But if we truly can't convince you to use an array--perhaps because
some other component is expecting the indivdual names? if so, would you
really want to use that component?--then:

For i = 1 To 15
Execute "strOut" & i & "_a = objComm(""Out" & i & "_a"")"
Next

Untested, but I think that's right.

Ugly and slow code, though. Try hard to avoid it.
 
A

Anthony Jones

ll said:
us?



Sorry for the confusion - allow me to just start from the beginning,
which might be easier. I have a set of variables
(strOut1_a....to...strOut15_a).
I'm looking for a way to loop through these variable names to
establish their values, such as:

strOut1_a = objComm("Out1_a")

but with a loop, rather than writing out each.


That can't be done, you need an array. I know thats already been said but
things in this thread seemed to have got over complicated for some reason.

Dim strOut_a(4)

' Stuff to assign values to the array elements


For i = 0 To UBound(strOut_a)
Response.Write strOut_a(i) & "<br />"
Next
 
O

Old Pedant

As I noted:

<%
For i = 1 To 15
Execute "strOut" & i & "_a = objComm(""Out" & i & "_a"")"
Next
%>

Or use ExecuteGlobal, of course.

As I said, a crappy idea, but it does work.
 

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
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top