Облака / Clouds
    Go to Copy.com
    Copy.com
    The bast cloud service
    Get 20 GB free!!!
    Support WebDav.
    Show more >>

    Go to Dropbox.com
    Dropbox.com
    time-tested cloud storage
    Support WebDav.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Дата изменения файла
   Категория: Файловая система
  Упаковать *.mdb-файл
   Категория: Базы данных
  Последний день месяца
   Категория: Базы данных
  Удалить или оставить симолы
   Категория: Текст и строки
  Сохранить документ Word как RTF на DELPHI
   Категория: Файловая система
  Undo в memo
   Категория: Компоненты
  Установить в программу свои шрифты
   Категория: Приложение
  Узнать установлена ли BDE
   Категория: Базы данных
  Находится ли мышь над формой
   Категория: Компоненты

Delphi - Справочник: Object

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 Object
1 type Name = Function header of Object;

2 type Name = Procedure header of Object;
Ключевое слово (Unit System)
Позволяет данным типа подпрограмм обращаться к методу объекта
Описание:
Ключевое слово Object имеет одно принципиальное использование - чтобы квалифицировать функцию или тип данных процедуры, позволяя ему обратиться к эквивалентному объектному методу.

Устаревшее его использование (не показан в вышестоящем синтаксисе), использовалось, чтобы создать объект (теперь мы используем конструктор класса).

Переменные функции и типы процедуры могут использоваться как указатели к функциям и процедурам с теми же самыми параметрами и конфигурацией возвращаемого значения (сигнатура).

Например:

function AddUp(a, b : Integer) : Integer;
...
type
TFunc = function(a, b : Integer) : Integer;
var
func : TFunc;
c : Integer;
begin
func := AddUp;
c := func(12, 34); // Вызывает функцию AddUp
end;

Со спецификатором Of Object, тип подпрограммы должен быть установлен на указатель метода в объекте.

Например:

type
TMyClass = class
public
procedure StoreName(name : string);
end;

TProc = procedure(name : string) of object;
var
proc : TProc;
myClass : TMyClass;
begin
myClass := TMyClass.Create;
proc := myClass.StoreName;
proc('My name'); // Вызывает myClass.StoreName
end;
Пример кода: Доступ к объектному методу непосредственно и косвенно

// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type // Определение простого класса TSimple = class private name : string; public function GetName : string; constructor Create(name : string); end; // Сам класс формы TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // Создание простого объекта constructor TSimple.Create(name: string); begin // Сохранение переданной строки self.name := name; end; // Возвращение простого имени function TSimple.GetName: string; begin Result := name; end; // Главная линия кода procedure TForm1.FormCreate(Sender: TObject); type TNameFunc = Function : string of Object; var simple : TSimple; nameFunc : TNameFunc; begin // Созданиеп простого объекта simple := TSimple.Create('Brian'); // Показ имени объекта ShowMessage('Обращение к имени непосредственно = '+simple.GetName); // Теперь обращаемся к этому методу косвенно nameFunc := simple.GetName; // Показ имени объекта ShowMessage('Обращение к имени косвенно = '+nameFunc); end; end.

Результат:
Обращение к имени непосредственно = Brian
Обращение к имени косвенно = Brian
Примечание:
Такие типы подпрограмм в действительности яявляются указателями и на код и на части данных метода.

  << Вернуться