[fpc-pascal] Pre-allocated TFPGList or similar
Sven Barth
pascaldragon at googlemail.com
Sun Nov 24 12:10:16 CET 2019
Am 24.11.2019 um 10:14 schrieb Michael Van Canneyt:
>
>
> On Sun, 24 Nov 2019, Sven Barth via fpc-pascal wrote:
>
>> Am 23.11.2019 um 23:42 schrieb Ryan Joseph via fpc-pascal:
>>> I need a pre-grown list which I can put (not insert!) items into at
>>> indexes
>> without getting "List index out of bounds" errors. For example I want
>> to start with a list that has 10 empty indexes:
>>>
>>> list := TList.Create(10); // 10 empty slots!
>>>
>>> list[5] := someItem;
>>>
>>> Is this possible using any list type in the RTL? Actually I'd rather
>>> just
>> disable all the out of bounds errors becauseĀ I need some performant
>> which isn't making more checks than need be. I want to use a
>> heap-based list because the it may need to grow later.
>> What you're looking for is the Count property. Setting it is
>> supported by the untyped lists in Classes, the generic ones in FGL as
>> well as those in Generics.Collections.
>
> Better yet, use Capacity.
>
> Count is meant to set the number of slots actually used.
> Capacity is the number of allocated slots.
But the setter for the items checks against Count, not Capacity, so the
code I showed will fail if used with Capacity instead of Count. At least
both properties should be set to work correctly.
Regards,
Sven
More information about the fpc-pascal
mailing list