Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  


Основы Delphi
Destructor
Ключевое слово
Определяет метод используемый для уничтожения объекта unit
  
type Class declaration
   ...
   Destructor Destroy; Override;
   ...
end;
Описание
Ключевое слово 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
 



© Форум Delphi   |  Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки   |  Английская версия