Здравствуйте
При работе с динамическими массивами я столкнулась с такой неприятной проблемой:
PMyType = ^TMyType
TMyType = record
...
end;
var
MyArray: array of TMyType
MyArrayLength: integer = 0;
function Add: PMyType;
begin
MyArrayLength := MyArrayLength + 1;
SetLength(MyArray, MyArrayLength);
result := @MyArray[MyArrayLength-1];
end;
procedure ShowPointerList;
var
i: integer;
begin
ListBox1.Clear;
for i := 0 to MyArrayLength - 1 do
ListBox1.Items.Add(IntToHex(Integer(@MyArray[i]), 8));
end;
При последовательном добавлении элементов (функция Add) все в порядке до тех пор, пока элементов не станет больше 8-ми. После этого все указатели меняются каждый раз при добавлении где-то до 40..50 элементов, потом все успокаивается.
После переделки на array of PMyType все заработало, однако вопрос все равно остается без ответа — что происходит с указателями при добавлении элементов?
Заранее благодарю за ответ.
Симонова Елена