Цитата:
Сообщение от serenberg
Ошибка Range Check Error;
При задании размерности массива выдает Range Check Error.
Пытался сделать через статичный массив, тогда происходило переполнение стека. Подскажите как с этим бороться, уменьшить размерность массива не могу, это географические данные.
Код:
type
TAz = record
count : integer;
distaln : array [1..2, 0..360000] of double;
...
procedure TForm1.Button1Click(Sender: TObject);
var
AzSel : array of TAz;
begin
...
SetLength(AzSel, 3600);
...
end;
|
Тип Double занимает в памяти 8 байт. У тебя в типе TAz их 2*360001=720002 штук которые займут 720002*8=5760016 байт плюс 4 байта на count : integer итого 5760020.
Потом ты резервируешь память под 3600 таких элементов которые займут 5760020*3600=20736072000 байт - ~20 гигабайт (!). Даже если у тебя есть столько оперативки в компьютере, то всё равно под Win32 для приложений отводится всего 2 гигабайта оперативки.