I've been using a lot of dynamic arrays of records lately,  Some are even 
Dynamic Arrays of records that contain other records, for example:
Type
   XYZ_Record = Record
      X,Y,Z : Double
   End;

   Call_Stack_Record = Record
      Location : LongInt;
      Offset   : XYZ_Record;
      Rotation : Double;
   End;

   Call_Stack : Array of Call_Stack_Record;

Then I do things like:
Call_Stack[I].Offset.X := 12.345

Making a helper to handle "All Possible Dynamic Arrays" would have to handle 
this kind of dynamic array of record structure... 
then the helper would just end up being way more complicated than just using 
the dynamic array, because you can't know every kind of array that might be 
defined.
I honestly don't see what you need a helper for dynamic arrays in the first 
place.  They are pretty straight forward.

I initialize (or reset) the array with 
SetLength(X,0);   

Then add things to it with:
SetLength(X,Length(X)+1);
X[Length(X)] := Data;

Remove things from it with 
SetLength(X,Length(X)-1);

Search through it with 
For I = 0 to Length(X)-1 Do
   Begin
      If X[I] = Test Then
         Do_Something;
   End;

Etc... 

I had some count variables to keep track of how many elements were in the 
Arrays,  but I got rid of them all because Length() is already there so I 
didn't see any reason to clutter up my code with another variable to keep track 
of... Length() ALWAYS reports an accurate count of the array elements... having 
a separate count variable could go wrong and be off from the actual number of 
elements.

James

-----Original Message-----
From: fpc-pascal <fpc-pascal-boun...@lists.freepascal.org> On Behalf Of Sven 
Barth via fpc-pascal
Sent: Sunday, February 21, 2021 5:00 PM
To: FPC-Pascal users discussions <fpc-pascal@lists.freepascal.org>
Cc: Sven Barth <pascaldra...@googlemail.com>; Ryan Joseph <generic...@gmail.com>
Subject: Re: [fpc-pascal] Generic routines for both dynamic array and other 
collections

Am 21.02.2021 um 15:59 schrieb Ryan Joseph via fpc-pascal:
>
>> On Feb 20, 2021, at 7:52 PM, Виктор Матузенко via fpc-pascal 
>> <fpc-pascal@lists.freepascal.org> wrote:
>>
>> And how do I write generic helper for all possible dynamic arrays?
> By hand sadly. The RTL has added type helpers for many types but I don't 
> think they added these for dynamic arrays. I agree that dynamic arrays should 
> have a "Count" method by default and the RTL should provide "array of T" for 
> all intrinsic types.

You are supposed to use Length(X). There is no need for a "property". 
One doesn't need to objectify each and everything!

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org 
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to