Для начала необходимо привести объект к нужному типу, например, так:
|
|
var
i : integer; begin ...
for i := 0 to MyList.Count -
1 do
dispose(PMyRecord(MyList[i]));
MyList.Free; end;
|
или
|
|
begin
for i := 0 to MyList.Count -
1 do
dispose(PMyRecord(MyList.items[i]));
MyList.Free; end;
|
Items - свойство по умолчанию, поэтому вам нет необходимости определять это,
хотя обратное не помешает.
Теперь можно заняться созданием работоспособной и полезной функцией. В форме:
|
|
var
p : ^mystruct;
begin
new(p);
...
dispose(p);
end; |
операторы new() и dispose() в точности соответствуют процедурам getmem() и
freemem(), за исключением того, что компилитор распределяет количество байт под
размер структуры, на которую ссылается переменная-указатель. По этой причине
указатель должен быть типизированным указателем, и следущий код неверен:
|
|
var
p : pointer;
begin
new(p);
end; |
, поскольку невозможно установить размер памяти, на которую должен ссылаться
указатель. С другой стороны, если вы используете getmem() и freemem(), вы можете
распределять байты для нетепизированного указателя, например:
|
|
var
p : pointer;
begin
getmem( p, 32767 );
...
freemem( p, 32767 );
end; | |