История изменений
Исправление bormant, (текущая версия) :
PPS. Коллекции из стандартного Objects из FPC можно использовать.
В руководстве по языку указано
const MaxBytes = 16384;
Но на самом деле там не все так грустно, поэтому в аналогичных случаях стоит сверяться с исходником RTL:
const
{$IFDEF FPC}
{$IFDEF CPU16}
MaxBytes = 16384;
{$ELSE CPU16}
MaxBytes = 128*1024*128;
{$ENDIF CPU16}
{$ELSE}
MaxBytes = 16384;
{$ENDIF}
MaxCollectionSize = MaxBytes div SizeOf(Pointer);
type
PItemList = ^TItemList;
TItemList = array [0..MaxCollectionSize-1] of Pointer;
TCollection = object(TObject)
Items: PItemList;
...
procedure TCollection.SetLimit(ALimit: LongInt);
...
if ALimit > MaxCollectionSize then
ALimit := MaxCollectionSize;
Исходная версия bormant, :
PPS. Не надо надеяться на коллекции из стандартного Objects из FPC, там:
const
MaxBytes = 16384;
MaxCollectionSize = MaxBytes div SizeOf(Pointer);
type
PItemList = ^TItemList;
TItemList = array [0..MaxCollectionSize-1] of Pointer;
TCollection = object(TObject)
Items: PItemList;
...
procedure TCollection.SetLimit(ALimit: LongInt);
...
if ALimit > MaxCollectionSize then
ALimit := MaxCollectionSize;