Const MaxBooleans = (High(Cardinal) – $F) div sizeof(boolean);
Type
TBoolArray = array[1..MaxBooleans] of boolean;
PBoolArray = ^TBoolArray;
Var
B: PBoolArray;
N: integer;
BEGIN
N:= 63579;
{= получение памяти под динамический массив.. =}
GetMem(B, N*sizeof(boolean));
{= работа с массивом… =}
B^[3477]:= FALSE;
{= возвращение памяти в кучу =}
{$IFDEF VER80}
FreeMem(B, N*sizeof(boolean));
{$ELSE}
FreeMem(B);
{$ENDIF}
END.
Массив
в Delphi
Раздел 1
Вот несколько функций для операций с двухмерными массивами. Самый простой путь для создания собственной библиотеки. Процедуры SetV и GetV позволяют читать и сохранять элементы массива VArray (его Вы можете объявить как угодно). Например:
type
VArray : Array[1..1] of double;
var
X: ^VArray;
NR, NC: Longint;
begin
NR:= 10000;
NC:= 100;
if AllocArray(pointer(X), N*Sizeof(VArray)) then exit;
begin {заполняем элементами двухмерный массив x размером ? x n : x[ir,ic] := value}
X[N*(ir-1) + ic]:= value;
end;
function GetV(const X: Varray; const N, ir,ic : Longint): double;
begin {возвращаем величины x[ir,ic] для двухмерного массива шириной n столбцов}
Result:= X[N*(ir-1) + ic];
end;
Раздел 2
Самый простой путь – создать массив динамически
Myarray:= GetMem(rows * cols * sizeof(byte,word,single,double и пр.)
сделайте функцию fetch_num типа
function fetch_num(r,c:integer): single;
result:= pointer + row + col*rows
и затем вместо myarray[2,3] напишите
myarray.fetch_num(2,3)
поместите эти функции в ваш объект и работа с массивами станет пустячным делом. Я экспериментировал с многомерными (вплоть до 8) динамическими сложными массивами и эти функции показали отличный результат.