Solved

Array of structs

Posted on 2004-04-20
22
2,007 Views
Last Modified: 2008-02-01
I know you can use Arrays in VBScript, but can you do an array of structs?

Something like:

Type LabelType
  message As String
  active As Boolean
End Type

Dim LabelStruct(30) As LabelType

Response.Write LabelStruct(1).message
Response.Write LabelStruct(2).message
Response.Write LabelStruct(2).active
Response.Write LabelStruct(3).message


etc???
0
Comment
Question by:knowlton
  • 11
  • 8
  • 3
22 Comments
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
With ASP.Net you can create hash tables to do this. In ASP classic, you can create your own custom classes, but I don't know that you can iterate through the values the way that you list above.

Fritz the Blank
0
 
LVL 6

Expert Comment

by:Mike_Metro
Comment Utility
ASP does not allow the Type statement or explicit data types.  You have to create a class.

Class LabelType
  Public message
  Public active
End Class

Set oType = new LabelType
oType.Message = "Hello"
oType.Active = true

Set LabelStruct(1) = oType
etc.

Response.Write LabelStruct(1).message
Response.Write LabelStruct(2).message
Response.Write LabelStruct(2).active
Response.Write LabelStruct(3).message


0
 
LVL 6

Expert Comment

by:Mike_Metro
Comment Utility
Sorry Fritz I meant to say ...."as Fritz the Blank stated ASP does not allow .... " didn't mean to plagerize
0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
To build on what Mike_Metro has said (and continuing with my idea of using a custom class):

If you do this:

Class LabelType
  Public message
  Public active
End Class

Set oType = new LabelType
oType.Message = "Hello"
oType.Active = true

Set LabelStruct(1) = oType
etc.

you will still need to create a new instance of the class for each Message/Active pair. If you follow a consistent naming convention, however, you can iterate through like this:

for i=0 to 10
  response.write(eval("LabelStruct(" & i &")")
next

but it is inefficient....

FtB
0
 
LVL 46

Accepted Solution

by:
fritz_the_blank earned 300 total points
Comment Utility
Using a multideminsional array would be better:

arrLabel =  new Array(12,2)

arrLabel(0,0)="This is the first message"
arrLabel(0,1)="Active"
arrLabel(1,0)="This is the second message"
arrLabel(1,1)="Inactive"
arrLabel(2,0)="This is the third message"
arrLabel(2,1)="Active"


Now you can iterate through everything easily.

Fritz the Blank
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
fritz:

Not sure what you mean (sorry).
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
Can I return multi-dimensional arrays back from function calls?

Function FillArray(myArray As Array) As Array
  'Fill the array


  FillArray = myArray
End Function
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
http://www.knowltonfamily.com/robotz_te/tom_test.asp


Is not working.


Here is the source code for this page:

<%
arrLabel =  new Array(12,2)

arrLabel(0,0)="This is the first message"
arrLabel(0,1)="Active"
arrLabel(1,0)="This is the second message"
arrLabel(1,1)="Inactive"
arrLabel(2,0)="This is the third message"
arrLabel(2,1)="Active"

Response.Write arrLabel(0,0)
Response.Write arrLabel(0,1)
Response.Write arrLabel(1,0)
Response.Write arrLabel(1,1)
Response.Write arrLabel(2,0)
Response.Write arrLabel(2,1)

%>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
I get this message:

Microsoft VBScript compilation  error '800a0401'

Expected end of statement

/robotz_te/tom_test.asp, line 2

arrLabel =  new Array(12,2)
---------------------^
0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
I haven't tried that. so I can't say for certain. However, you can always declare the array outside of the function and manipulate it with a subroutine. Alternatively, and again I haven't tried this, you can pass the array as an object to your funciton:

Function FillArray(By Ref myArray)

About this:

>>Not sure what you mean (sorry).<<

Is there something that I can clarify?


FtB
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
>>Not sure what you mean (sorry).<<


Moot at this point.......ignore it.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 6

Assisted Solution

by:Mike_Metro
Mike_Metro earned 200 total points
Comment Utility
Try this:
Dim arrLabel(12,2)
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
That did the trick!!!!



~~~~~~~~~~~~~~~~~~~~~~~~
Sample code for those who follow:
~~~~~~~~~~~~~~~~~~~~~~~~


<%
Dim arrLabel(12,2)

arrLabel(0,0)="This is the first message"
arrLabel(0,1)="Active"
arrLabel(1,0)="This is the second message"
arrLabel(1,1)="Inactive"
arrLabel(2,0)="This is the third message"
arrLabel(2,1)="Active"

Response.Write arrLabel(0,0)
Response.Write arrLabel(0,1)
Response.Write arrLabel(1,0)
Response.Write arrLabel(1,1)
Response.Write arrLabel(2,0)
Response.Write arrLabel(2,1)

%>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>
0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
Oops! Sorry about the syntax error--I slipped into JScript. Mike_Metro has provided the correct syntax above.

Fritz the Blank
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
fritz:  I figured you knew the correct syntax.

Try going from VB to C++ or C#.   Lots o' fun:

=    vs   ==

ending everything with ;


Drives me crazy.
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
I guess JavaScript would have the same woes.
0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
Knowlton--

Are you using C# with .Net?

Fritz the Blank
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
Yes
0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
Another approach may be to use a Hash table....

http://www.w3schools.com/aspnet/aspnet_hashtable.asp

Fritz the Blank
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
My account on brinkster.com does not support ASPX (yet)
0
 
LVL 46

Expert Comment

by:fritz_the_blank
Comment Utility
Ah. Until then...

FtB
0
 
LVL 5

Author Comment

by:knowlton
Comment Utility
But....thanks for the link!!!!!
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

I recently decide that I needed a way to make my pages scream on the net.   While searching around how I can accomplish this I stumbled across a great article that stated "minimize the server requests." I got to thinking, hey, I use more than one…
Hello, all! I just recently started using Microsoft's IIS 7.5 within Windows 7, as I just downloaded and installed the 90 day trial of Windows 7. (Got to love Microsoft for allowing 90 days) The main reason for downloading and testing Windows 7 is t…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now