Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Процедурные типы
15 апреля 2009

В языке Delphi процедуры и функции рассматриваются не только как части програм-
мы, которые можно выполнять с помощью вызовов, а трактуются гораздо шире: здесь до-
пускается интерпретация процедур и функций как объектов, которые можно присваивать
переменным и передавать в качестве параметров. Такие действия можно выполнять
с помощью процедурных типов. В описании процедурного типа задаются парамет-
ры, а для функции еще и возвращаемое значение.
По существу синтаксис записи процедурного типа в точности совпадает с записью
заголовка процедуры или функции, только опускается идентификатор после ключе-
вого слова procedure или function. Приведем несколько примеров объявлений
процедурного типа.
type
Proc = procedure;
SwapProc = procedure(var X, У: Integer);
StrProc = procedure(S: String);
MathFunc = function(X: Real): Real;
DeviceFunc = function(var F: Text): Integer;
MaxFunc = function(A, B: Real; F: MathFunc): Real;
Имена параметров в описании процедурного типа играют чисто декоративную
роль — на смысл описания они не влияют.
Язык Delphi не позволяет описывать функции, которые возвращают значения про-
цедурного типа. Результат функции должен быть указателем строкового, веществен-
ного, целого, символьного, булевого типа или иметь перечислимый тип, определен-
ный пользователем.
Рассмотрим небольшой пример. Объявляем следующую функцию.
function Calc(X,Y: Integer): Integer;
Затем объявляем переменную F.
var
F: function(X,Y: Integer): Integer;
И присваиваем ей ссылку на функцию.
F := Calc;
С этой переменной можно поступать точно так же, как и с остальными переменны-
ми, ее можно применять и для вызова функций. Вот как это происходит в программе.
function Calc(х,у:Integer): Integer;
begin
Result := X + Y;
end;
type
F = function (X,Y:Integer): Integer;
var
Pfunc: F;
begin
Pfunc := Calc;
Writeln(Pfunc(2,3));
Readln;
end.
Сначала описана функция Calc, в которой выполняется сложение двух чисел, за-
тем объявлен процедурный тип F и создана процедурная переменная pfunc, которой
в дальнейшем присваивается ссылка на функцию Calc. Вывод на экран в выражении
writeln(pfunc(2, 3)) ,- производится с помощью процедурной переменной pfunc.
На экране появится цифра 5.
Наверно, некоторые задумаются, зачем так усложнять программу, ведь можно не-
посредственно сделать вывод самой функции, не делая дополнительные преобразова-
ния. Все дело в том, что различных функций может быть сколь угодно много, и тогда
для вывода каждой функции придется отдельно вызывать функцию write с соответ-
ствующими параметрами. Но присваивание функций процедурной переменной по-
зволяет использовать только одну форму вывода Writeln (pfunc (X, Y));, что делает
программу более понятной, позволяет сократить ее и исключить возможные ошибки.
Использование процедурных переменных позволяет во многих случаях улучшить
наглядность программы и, соответственно, сделать ее более надежной.

Теги: borland delphi vista, borland delphi, SendTo, Windows Borland Delphi

Статьи по теме:

Печать из полей базы данных
ПРОСТЕЙШИЙ DATASET
Событие AfterPreview для TQuickRep
ППП автоматизированного проектирования
Свойство Lines
Свойство Enabled
ДОБАВЛЕНИЕ ВОЗМОЖНОСТЕЙ РЕДАКТИРОВАНИЯ
Семиуровневая модель ЛВС
Инспектор объектов
Свойство Color
Свойство CurrentX
Создание выражений
Размер бумаги и границы
Ключевые слова языка Delphi
Простая функция Паскаля
| Borland Delphi | vitek |
 


Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | Borland Delphi | Процедурные типы. Регион сайта: Москва и Санкт-Петербург