Динамический массив - проблема с указателями
От: Lenok-Sim  
Дата: 20.09.05 11:05
Оценка:
Здравствуйте

При работе с динамическими массивами я столкнулась с такой неприятной проблемой:

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 все заработало, однако вопрос все равно остается без ответа — что происходит с указателями при добавлении элементов?

Заранее благодарю за ответ.
Симонова Елена
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.