Содержание материала

 

Вот несколько функций для операций с двухмерными массивами. Самый простой путь для создания собственной библиотеки. Процедуры SetV и GetV позволяют читать и сохранять элементы массива VArray (его Вы можете объявить как угодно). Например:

 

 

Code:

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;

SetV(X^, NC, 2000, 5, 3.27); { X[2000,5] := 3.27 }

end;

 

function AllocArray(var V: pointer; const N: longint): Boolean;

begin{распределяем память для массива V размера N}

try

   GetMem(V, N);

except

   ShowMessage('ОШИБКА выделения памяти. Размер:' + IntToStr(N));

   Result := True;

   exit;

end;

FillChar(V^, N, 0); {в случае включения длинных строк заполняем их нулями}

Result := False;

end;

 

procedure SetV(var X: Varray; const N, ir, ic: LongInt; const value:

double);

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;

 Самый простой путь - создать массив динамически

Code:

Myarray := GetMem(rows * cols * sizeof(byte,word,single,double и пр.) 

 

сделайте функцию fetch_num типа

Code:

function fetch_num(r,c:integer) : single; 

 

result := pointer + row + col*rows

 

и затем вместо myarray[2,3] напишите

Code:

myarray.fetch_num(2,3

 

 

поместите эти функции в ваш объект и работа с массивами станет пустячным делом. Я экспериментировал с многомерными (вплоть до 8) динамическими сложными массивами и эти функции показали отличный результат.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить