Описание |
Ключевое слово Destructor определяет процедуру деструктора Destroy для класса.
При освобождении объекта, вызывается Destructor. Это позволяет объекту освободить память или другие используемые ресурсы, которые он использовал.
Обычно деструктора имеет название destroy, но это никак не ограничено. Но будет умно сохранить это название.
Директива Override должна быть указана, так как мы отменяем виртуальный метод уничтожения TObject.
|
|
Примечания |
В конце деструктора, вы должны вызвать Inherited для вызова родительского деструктора.
|
|
Похожие команды |
Class Начинает объявление типа объектного класса
Constructor Определяет метод используемый для создания объекта из класса
Function Определяет подпрограмму, которая возвращает значение
Inherited Используется для вызова родительского класса конструктора или метода деструктора
Object Позволяет данным типа подпрограмм обращаться к методу объекта
Procedure Определяет подпрограмму, которая не возвращает значение
TObject Тип базового класса, который является предком для всех других классов
| |
|
Пример кода : Пример деструктора используемый для освобождения приобретённой памяти |
// Полный код Модуля. // ----------------------------------------------------------- //
Вы должны поместить этот код в модуль с именем Unit1 и с формой //
названную Form1, которая имеет событие OnCreate названное FormCreate.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type // Строка содержащая запись
TString = string[10];
// Определение класс контейнера
TWords = class
private
wordCount : Integer;
wordsStart : Pointer;
function Get(Index: Integer): string;
public
property GetWord[Index : Integer] : string read Get;
published
constructor Create(count : integer);
Destructor Destroy; override;
end;
// Сам класс формы
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Конструктор TWords - формирует массив слова
constructor TWords.Create(count: integer);
var
i : Integer;
wordsList : ^TString;
begin // Получите памяти для 'count'
строк
GetMem(wordsStart, count*SizeOf(TString));
// Заполнение этого списка
wordsList := wordsStart;
wordCount := count;
for i := 1 to count do
begin
wordsList^ := 'Word '+IntToStr(i);
Inc(wordsList);
end;
end;
// Деструктор TWords - освобождает память
destructor TWords.Destroy;
begin // Освобождение памяти, если она
получена
if wordsStart <> nil
then FreeMem(wordsStart);
// Всегда вызывайте родительский
деструктор после выполнения вашего собственного кода
inherited;
end;
// GetWord функция чтения свойства
function TWords.Get(Index: Integer): string;
var
wordsList : ^TString;
begin // Чтение слова по данному
индексу, если в диапазоне
if (Index >= 1) and (Index <= wordcount)
then
begin
wordsList := wordsStart;
Inc(wordsList, Index-1);
Result := wordsList^;
end;
end;
// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
words : TWords;
begin // Создание объекта TWords
words := TWords.Create(4);
// Теперь показываем 2-ое слово в
этом объекте
ShowMessage('2-ое слово = '+words.GetWord[2]);
end;
end.
|
2-ое слово = Word 2
|
|