Изменение размера динамической структуры
|
Чем больше структура программы соответствует ее логике, тем меньше вы стоите как программист.
|
При изменении размера динамической структуры удобно пользоваться процедурой ReallocMem. Это возможно в том случае, если после этих данных память пуста. Если же это не получится, будет выделен новый кусок памяти, а данные перемещены туда. Пример:
function ShowArray(p: PByteArray; count: integer): string;
var
i: integer;
begin
result := '';
for i := 0 to count - 1 do
result := result + IntToStr(p^[i]) + ' ';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
p: PByteArray;
i: integer;
begin
randomize;
p := AllocMem(10);
for i := 0 to 9 do
p^[i] := random(256);
Label1.Caption := ShowArray(p, 10);
ReallocMem(p, 20);
for i := 10 to 19 do
p^[i] := random(256);
Label2.Caption := ShowArray(p, 20);
end;
|
Динамический массив заполняется случайными числами. После этого размер массива изменяется.
Для этого используется лишь одна процедура - ReallocMem.
После ее выполнения, данные в начале массива остаются неизмененными.
|