Можно и в коде программы указать опцию компилятора:
{$MAXSTACKSIZE сколько надо, с запасом}
Имейте в виду, что памяти на стеке может понадобиться вдвое больше, если Вы, например, передаёте массив из одной функции в другую по значению (без слов var и const), а то и ещё больше.
-- Вт ноя 30, 2010 14:10:24 --Но лучше, как посоветовал
venco, использовать динамическое выделение памяти. Например, так:
type
PArray = ^TArray;
TArray = array[0..999, 0..999] of Double;
var
pA: PArray;
begin
GetMem(pA, SizeOf(TArray));
try
// Работаем с массивом
pA^[999,999] := 1.0;
// В функции можно передавать pA, не опасаясь переполнения стека
finally
FreeMem(pA, SizeOf(TArray));
end;
end;
или используя динамические массивы:
type
TDynArray = array of array of Double;
var
A: TDynArray;
begin
SetLength(A, 1000);
for i := 0 to 999 do
SetLength(A[i], 1000);
A[999,999] := 1.0;
// В функции можно передавать A, не опасаясь переполнения стека,
// т.к. память будет выделяться в куче
// Кроме того, в функциях можно будет менять размеры массива
// (если передавать его как var-параметр)
end;