Советы по Delphi

         

Освобождение записей


Для начала необходимо привести объект к нужному типу, например, так:



    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;

[001203]



Содержание раздела