[Back to RECORDS SWAG index] [Back to Main SWAG index] [Original]
{
>Okay, I've got the need to load about 3000 Records, at 73 Bytes a piece,
>into active memory. It'd be preferred to have it as an Array of
>Records, which is what I'm using now (only at 1000 Records though).
>When I do this I get Structure too Large. Is there any way that I can
>load all of these Records into memory, For sorting, editing, deleting
>and adding new entries (which is easy With an Array).
}
Const
MaxItems = 3000 ;
Type TItem =
Record
{ 73 Bytes Record }
Dum : Array[1..73] of Byte ;
end ;
PItem = ^TItem ;
TItemArray = Array[1..MaxItems] of PItem ;
Var i : Integer ;
Arr : TItemArray ;
begin
For i:=1 to MaxItems Do New(Arr[i]) ;
{ Now, can use all those items in memory }
For i:=1 to MaxItems Do Dispose(Arr[i]) ;
end.
{
note that the set of data will occupy :
3000*4 Bytes in DS 12000 Bytes
3000*80 Bytes in the heap 240000 Bytes
------
252000 Bytes of memory...
The '80' in the second line is due to the fact that TP 6's heap manager
allocates heap space by multiples of 8 Bytes, thus 73 Bytes result in
80 Bytes allocs. Reducing it to 72 Bytes would save 8*3000=24000 Bytes.
Anyway, this is not Real safe Programming, and you should prefer using a
File, unleast you are Really sure that :
- you won't have more than 3000 Records,
- any machine your Program will run onto has enough memory.
}
[Back to RECORDS SWAG index] [Back to Main SWAG index] [Original]