Форум: "Основная";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
Внизможно ли вызвать процедуру по её адресу? Найти похожие ветки
← →
hasher (2005-05-21 21:13) [0]есть что-то вроде этого
type
PFunction = ^TFunction;
TFunction = function(i: Integer);
function f1(i: Integer): Inrteger;
function f2(i: Integer): Inrteger;
и есть ещё одна функция, скажем f3, которая должна вызывать одну из этих функций (заранее не известно какую именно).
я сделал так
function f3(i: Integer; f: TFunction): Integer;
begin
Result:= f^(i);
end;
но так не работает.
Подскажите пожалуйста как именно надо проделывть этот трюк...
Заранее благодарен.
← →
begin...end © (2005-05-21 21:25) [1]> hasher (21.05.05 21:13)
> PFunction = ^TFunction;
А зачем это? Переменная типа TFunction уже будет адресом нужной функции. И тогда всё упрощается:
function F3(I: Integer; F: TFunction): Integer;
begin
Result:= F(I)
end.
Пример вызова:
... := F3(1, F1)
← →
hasher (2005-05-21 21:27) [2]при таком вызове надо указывать параметры для f1:
:= f3(1, f1(j));
← →
hasher (2005-05-21 21:28) [3]но тогда она вернёт значение типа Integer
← →
begin...end © (2005-05-21 21:35) [4]> hasher (21.05.05 21:27) [2]
> при таком вызове надо указывать параметры для f1
Нет, не надо.function F1(I: integer): Integer;
begin
Result := I * 2
end;
function F2(I: integer): Integer;
begin
Result := I * 3
end;
function F3(I: integer; F: TFunction): Integer;
begin
Result := F(I)
end;
begin
... := F3(1, F1)
end.
← →
hasher (2005-05-21 21:39) [5]действительно, работает!
чё-т я перемудрил...
ОГРОМНОЕ СПАСИБО
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c