Справочник функций и процедур Delphi: Object

  Навигация по первой букве:

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

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

  Реклама:

http://автобагажники.рф/bagazhniki/ автомобильные Багажники на крышу.  |

Object
Ключевое слово
Позволяет данным типа подпрограмм обращаться к методу объекта System unit
  
1 type Name = Function header of Object;

2 type Name = Procedure header of Object;

Google  
 
Описание
Ключевое слово 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;
Примечания
Такие типы подпрограмм в действительности яявляются указателями и на код и на части данных метода.
Похожие команды
Class  Начинает объявление типа объектного класса

Function  Определяет подпрограмму, которая возвращает значение

Procedure  Определяет подпрограмму, которая не возвращает значение

TObject  Тип базового класса, который является предком для всех других классов

 
Пример кода : Доступ к объектному методу непосредственно и косвенно
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем 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
 


Copyright © 2004-2016 Delphi Sources (источник – "DelphiBasics.ru")
 


Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook