Как сделать процедуру в delphi

Добавил пользователь Владимир З.
Обновлено: 05.10.2024

Краткий обзор как использовать различные типы процедур и функций Delphi, указателей на функции и процедуры, методы и указатели методов, анонимные методы.

Автономные процедуры

Более или менее все RTL процедуры - так называемые "автономные" процедуры. Они объявлены на уровне модулей и чтобы вызвать такую процедуру, Вы должны знать, где она объявлена (имя модуля и список параметров для передачи).

Пример - процедура ShowMessage, объявленная в модуле dialogs.pas, вот ее объявление:

Чтобы вызвать такую процедуру, Вы просто должны включить имя модуля, где объявлена эта процедура в раздел uses вызывающего модуля. Большинство общих модулей уже перечислено в пункте uses модуля формы, таким образом, Вы не должны вручную добавлять dialogs.pas, чтобы использовать ShowMessage.

Вложенные процедуры

Функции и процедуры иногда содержат другие функции и процедуры в пределах своих блоков:

Вышеупомянутые два типа объявления процедур не связаны с классом или объектом.

Методы

Процедуры, которые связаны с классом, называют методами. Большинство методов используют экземпляры класса - объекты. Некоторые методы, называемые методами класса, работают в классах.

Функция Add - метод класса TStringList. Например, метод Add объявляется как:

Процедурные типы и указатели процедур

Delphi позволяет обрабатывать подпрограммы (функции и процедуры) как значения, которые могут быть назначены переменным.

Рассмотрим отрывок кода:

В этом коде TDisplayerProc и TIntegerDisplayerFunc - процедурные типы

Переменные dp и idp - указатели процедур. Обратите внимание, что функция DisplayDoubleInteger получает процедурный тип, как второй параметр (TDisplayerProc).

Указатели методов

Подобно указателям процедур, указатели методов ссылаются на методы экземпляра объекта.

Анонимные методы

Начиная с Delphi 2006, язык Delphi знает также анонимные методы.

Анонимный метод - процедура или функция, которая не связана с ассоциированным именем.

Извините за тупость. .
В каком-то уроке видел:
После private пишем название потом Ctrl+Shift+C
Delphi её создаёт. .
Но у меня на деле он просто выдаёт какую-еибуть ошибку и нихрена не делает.
Так как её создать, друзья?

А можно конкретнее - какая ошибка возникает? По описанному методу работает у меня. Можно и вручную создать, как в варианте выше, только перед именем ещё нужно будет дописать ТФорм1. (латиницей только - мэйл у меня ругается) , например.

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Подскажите пожалуйсто где надо объявить процедуру свою чтобы не надо было каждый раз писать в ней Form1.Label1.Caption и т.д.. и вообще как оформляются свои процедуры в delphi? что это за (Sender: TObject) надо его писать или нет, подскажите

A Sender указывает какой компонент перехватывает событие, вот для примера код из стандартной справки:

ArtInt спасибо ещё один вопрос - как вызвать таким образом объявлённую процедуру из другой процедуры?

ArtInt у меня такая ситуация - есть функция и из неё вызываются процедуры, так вот функцию тоже надо прописывать там где Pravite,Public ?

2 Procedure Name(Parameters);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

var
Form1: TForm1;

implementation
// Вложение определений формы

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;

Читайте также: