TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Процедурные значения 

             Переменной процедурного  типа  можно  присвоить  процедурное

        значение. Процедурные значения могут быть следующими:

             * значениями nil;
             * ссылкой на переменную процедурного типа;
             * идентификатором процедуры или функции.

             В контексте  процедурных  значений  описание  процедуры  или
        функции можно  рассматривать  как  специальный вид описаний конс-
        тант, когда значением константы является процедура  или  функция.
        Рассмотрим, например, следующее описание:

             var
                P: SwapProc;
                F: MathFunc;

             procedure Swap(var A, B: Integer); far;
             var
               Temp: Integer;
             begin
               Temp := A;
               A := B;
               B := Temp;
             end;

             function Tan(Angle: Real); far;
             begin
               Tan := Sin(Angle) / Cos(Angle);
             end;

             Переменным P и F можно присвоить значения следующим образом:

             P := Swap;
             F := Tan;

        а вызовы с помощью P и F можно выполнить так:

             P(I, J);                  { эквивалентно Swap(I, J) }
             X := F(X);                { эквивалентно X := Tan(X) }

             Использование процедурных  переменных,  которым  в операторе
        вызова процедуры или функции присваивается значение nil, приводит
        к ошибке.  Значение nil предназначено для указания того, что про-
        цедурная переменная не присвоена, и, так где процедурная перемен-
        ная может  получить значение nil,  участвующие в этой процедурной
        переменной вызовы процедур и функций следует подвергать проверке:

             if @P <> nil then P(I, J);

             Обратите внимание на использование операции @  для  указания
        того, что P проверяется, а не вызывается.


Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz