Инструменты пользователя

Инструменты сайта


cp:obx-proc-type

Использование процедурных типов

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

При этом, нужно помнить, что список аргументов у переменной процедурного типа и самой процедуры должны совпадать.

Пример

MODULE TestProcedure;

    IMPORT sl := StdLog;

    TYPE
        tP = PROCEDURE (IN str: ARRAY OF CHAR);

    PROCEDURE Test1 (IN str: ARRAY OF CHAR);
    BEGIN
        sl.String('Test1:=' + str); sl.Ln
    END Test1;

    PROCEDURE Test2 (IN str: ARRAY OF CHAR);
    BEGIN
        sl.String('Test2:=' + str); sl.Ln
    END Test2;

    PROCEDURE Start*;
    VAR
        pp: tP;
        str: ARRAY 40 OF CHAR;
    BEGIN
        pp := Test1;
        str := 'Привет, Вася!';
        pp(str);
        pp := Test2;
        str := 'Привет, Петя!';
        pp(str)
    END Start;

END TestProcedure.

Важные замечания

Если переменной процедурного типа не присвоить значение, она будет иметь значение NIL.

cp/obx-proc-type.txt · Последнее изменение: 2021/06/24 14:58 — iadenisov