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

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

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

  Реклама:

 

Procedure
Ключевое слово
Определяет подпрограмму, которая не возвращает значение System unit
  
1 Procedure Name; {Directives;}

2 Procedure Name(Parameters); {Directives;}

3 type Name = Procedure{(Parameters)} {of object};

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

Версия 1: Определяет процедуру, которая работает без параметров. Версия 2: Определяет процедуру, которой передаётся один или более параметров.

Когда процедура определена в классе, она обычно называют Методом. Пока используется директива Overload, одно и то же имя может использоваться больше чем в одной процедуре.

Reintroduce : Переопределяет подавленную функцию
Overload : Позволяет иметь одинаковые названия для 2 или более функций
Virtual : Может быть переопределен в дочернем классе
Override : Переопределяет родительский метод класса
Abstract : Вызывает дочерний класс для выполнения

Версия 3: Определяет процедуру как тип данных. Это позволяет процедуре быть переданным как параметр, и использоваться как переменная. Определение типов определяет только конфигурацию процедуры - а не название.

Переменной данного типа можно присвоить имя любой процедуры с её конфигурацией. Когда присвоено, имя переменной может быть обработано, как будто это название процедуры. См. код примера.

Опция Of Object позволяет Вам обращаться к объектному методу. Обращайтесь к переменной такого типа, как будто Вы вызываете объектный метод непосредственно. См. второй пример.
Похожие команды
Abstract  Определяет метод класса, осуществляемый только в подклассах

Const  Начинает определение данных с установленными значениями

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

Out  Идентифицирует стандартный параметр только для вывода

Overload  Позволяет 2-м или более подпрограммам иметь одинаковое название

Override  Определяет метод, который заменяет виртуальный родительский метод класса

Var  Начинает раздела определения переменных

Virtual  Позволяет методу класса быть отменённым в производных классах

Dynamic  Позволяет методу класса быть заменённым в производных классах

 
Пример кода : Простой пример
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
  // Модуль System не нуждается в определении
  Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm} // Вложение определений формы

Procedure ShowSum(a, b : Integer);
var
  total : Integer;
begin
  // Сложение двух чисел
  total := a + b;

  // Показ суммы
  ShowMessageFmt('%d + %d = %d',[a,b,total]);
end;

// Подпрограмма On Create основной формы - наша основная программа
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Показ суммы нескольких пар чисел
  ShowSum(1,2);
  ShowSum(245,62);
end;

end.
1 + 2 = 3
245 + 62 = 307
 
Пример кода : Иллюстрирование Procedure и Procedure type
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  // Сам класс формы
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// В строку функций

Procedure ShowMsg(msg : string);
begin
  ShowMessage(msg);
end;

Procedure ShowLongMsg(msg : string);
begin
  ShowMessage('Текст сообщения = '+msg);
end;

// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
type
  TShowProc = Procedure(msg : string);

var
  showProc : TShowProc;

begin
  // Использование ShowMsg косвенно
  ShowMessage('Используя ShowMsg косвенно :');
  ShowMsg('Привет Мир');

  // Использование процедуры ShowMsg непосредственно
  ShowMessage('Используя ShowMsg непосредственно :');
  showProc := ShowMsg;
  showProc('Снова привет');

  // Использоване ShowLongMsg косвенно
  ShowMessage('Используя ShowLongMsg косвенно :');
  showProc := ShowLongMsg;
  showProc('Снова привет');
end;

end.
Используя ShowMsg косвенно :
Привет Мир
Используя ShowMsg непосредственно :
Снова привет
Используя ShowLongMsg косвенно :
Текст сообщения = Снова привет
 
Пример кода : Использование типа процедуры класса
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем 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;
    Procedure SetName(name : 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
  // Save the passed string
  self.name := name;
end;

// Возвращение простого имени
function TSimple.GetName: string;
begin
  Result := name;
end;

// Назначение переданного имени
Procedure TSimple.SetName(name : string);
begin
  self.name := name;
end;

// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
type
  TNameProc = Procedure(name : string) of object;

var
  simple   : TSimple;
  nameProc : TNameProc;

begin
  // Создание простого объекта
  simple := TSimple.Create('Brian');

  // И установка имени
  simple.SetName('New name');

  // Показ имени объекта
  ShowMessage('Имя сейчас = '+simple.GetName);

  // Обращение к методу SetName
  nameProc := simple.SetName;

  // И установка имени
  nameProc('Even newer name');

  // Показ имени объекта
  ShowMessage('Имя сейчас = '+simple.GetName);
end;
end.
Имя сейчас = New name
Имя сейчас = Even newer name
 


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


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