Облака / 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.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Объект экрана — Screen
   Категория: Компоненты
  Что такое хук (hook)?
   Категория: Приложение
  Получение списка всех сетевых дисков из Delphi
   Категория: Интернет и Сети
  Создание и удаление полей
   Категория: Базы данных
  Компоненты CoolBar и ControlBar
   Категория: Компоненты
  Перегенерировать все индексы Dbase
   Категория: Базы данных
  Удалить или оставить симолы
   Категория: Текст и строки
  Создание ярлыка на Рабочем столе
   Категория: Приложение
  Пароль на ADO
   Категория: Базы данных

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

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 Procedure
1 Procedure Name; {Directives;}

2 Procedure Name(Parameters); {Directives;}

3 type Name = Procedure{(Parameters)} {of object};
Ключевое слово (Unit System)
Определяет подпрограмму, которая не возвращает значение
Описание:
Ключевое слово Procedure определяет подпрограмму, которая не возвращает значение.

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

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

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

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

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

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

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

Результат:
1.
1 + 2 = 3
245 + 62 = 307
2.
Используя ShowMsg косвенно :
Привет Мир
Используя ShowMsg непосредственно :
Снова привет
Используя ShowLongMsg косвенно :
Текст сообщения = Снова привет
3.
Имя сейчас = New name
Имя сейчас = Even newer name

  << Вернуться