Киберфак – бесплатно скачать презентации PowerPoint, лекции, рефераты, шпоры, курсовые cyberfac logo
cyberfac.ru
На главную | Регистрация | Вход
  Статьи  
Главная » Статьи » Информатика » Информатика и программирование

Процедуры: построение, использование (Delphi)

Полезная статья? Пожалуйста, поставьте "+"
К содержанию

Ключевое слово 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.
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


Категория: Информатика и программирование | Добавил: Ni-Cd (01 Декабря 2011)
Просмотров: 1327 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
  Полезные материалы  

В нашем каталоге файлов можно найти много полезной информации. Также советуем заглянуть в каталог статей: в нем есть полезные статьи по темам: Экономика предприятия, Общая экономика, Финансы и Кредит, также Словарь терминов по экономике, Маркетинг, Бухучет и Мировая экономика
Также есть полезная страница Факультеты МИФИ, которая расскажет о том, какие есть в МИФИ факультеты.
Меню
 

Навигация
Высокоуровневые методы информатики и программирования [28]
Информатика и программирование [34]
Информационные системы в экономике [36]
Языки программирования и методы трансляции [15]
Алгоритмизация и программирование [61]
 

Поиск
 

Онлайн
Онлайн всего: 1
Гостей: 1
Пользователей: 0
 

Статистика


Рейтинг@Mail.ru

 


2007 - 2019 © Ni-Cd. All Rights Reserved