Работа с большими массивами
Распределите память кучи с помощью GetMem. Если вы имеете:
var a, b: array[0..30000]: Integer;
|
то попробуйте:
type TBigArray = array[0..30000] of Integer;
var a, b: ^TBigArray;
|
и во внешнем блоке сделайте:
GetMem(a, SizeOf(TBigArray)); GetMem(b, SizeOf(TBigArray)); |
Также необходимо применять указатели на память вместо ссылок, например взамен:
a[0] := xxx; |
необходимо использовать
a^[0] := xxx; |
Заставить Delphi работать с достаточно большим массивом данных
procedure TForm1.Button1Click(Sender: TObject);
type
TMyRec = record
i1, i2, i3: Integer;
end;
TMyArr = array[1..20000000] of TMyRec;
PMyArr=^TMyArr;
var
A: PMyArr;
begin
GetMem(A, SizeOf(TMyArr));
A^[1].i1 := 100;
ShowMessage('Ok' + IntToStr(A^[1].i1));
FreeMem(A);
end; |