• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 335
  • Last Modified:

dynamic array

How can I create a dynamic array (from variant ?) of a user defined record ?

Andrew
0
andrewyu
Asked:
andrewyu
1 Solution
 
kretzschmarCommented:
type
  TRecord = record
              ....
            end;
  TRecArray : Array of TRecord;

var
  ARecArray : TRecArray;

...

     
0
 
andrewyuAuthor Commented:
How can I resize or define dimension of ARecArray ?

Andrew
0
 
Mohammed NasmanSoftware DeveloperCommented:
 SetLength(MyArr,100);
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
andrewyuAuthor Commented:
Therefore, I can access the array from MyArr[0] to MyArr[99].

However, how can I create a multi-dimension array with SetLength ?

Andrew
0
 
Tomas Helgi JohannssonCommented:
   Hi!

Add the following to the type declartion :
     TMRecArray = Array of TRecArray;

The variable should be
ARecArray : TMRecArray;

Then to initialize the multidimenisionalarray
like this

procedure TForm1.FormCreate(Sender: TObject);
var
   i,j,max : Integer;
begin
     max := 100
     SetLength(ARecArray,max);
     for j := 0 to max-1 do
     begin
          SetLength(ARecArray[j],max);
     end;
     for i := 0 to max-1 do
         for j := 0 to max-1 do
           ARecArray[i][j].<record field name> := <what ever>;
end;

This example is a 100x100 matrix. If you want to add a dimmension to your array then you just add in the type declaration <a new name of array type> : <the last name of array type> and so on. And the variable to the new name of the array type.
Then in the initalization you should add some code like this

procedure TForm1.FormCreate(Sender: TObject);
var
   i,j...,z,max : Integer;
begin
     max := 100
     SetLength(ARecArray,max);
     for j := 0 to max-1 do
     begin
          SetLength(ARecArray[j],max);
          for k := 0 to max-1 do
          begin
              SetLength(ARecArray[j][k],max);
              for ...
              begin
                  SetLength(ARecArray[j][k]....,max);
              end
          end;
     end;
end;
 
The for loops for each additional dimmension should be like the for k:= - loop.

Just remember to free the memory :)

Regards,
Tomas Helgi
0
 
MoondancerCommented:
Have you been helped here, or is more needed?
Moondancer - EE Moderator
0
 
andrewyuAuthor Commented:
Thank you very much !

Andrew
0
 
MoondancerCommented:
Thank you, Andrew, for returning and finalizing this.
Moondancer - EE Moderator
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now