Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизМожно ли в параметр функции передать другую функцию? И как? Найти похожие ветки
← →
Пубертанец (2003-09-11 11:58) [0]Сабж
← →
Basilio (2003-09-11 12:02) [1]
type
myfunc=function (x:integer):integer;
procedure printer(value:integer;printfunc:myfunc);
begin
printfunc(value);
end;
function prn1(x:integer):integer);
begin
writeln("prn1:",x:4);
end;function prn2(x:integer):integer);
begin
writeln("prn2:",x:10);
end;
begin
printer(10,prn1);
printer(10,prn2);
end.
← →
Nikolay M. (2003-09-11 12:05) [2]Например, так:
type
TMyProc = procedure (S : string) ofobject;
type
TfMain = class(TForm)
procedure ProcToAcceptFunc (Func : TMyProc);
procedure Func1 (S : string);
procedure Func2 (S : string);
....
end;
procedure TfMain.ButtonClick;
var
temp : TMyProc;
begin
temp := Func1;
ProcToAcceptFunc (temp);
temp := Func2;
ProcToAcceptFunc (temp);
end;
Уффф...
Вроде почти так. Пишу на коленке, не обессудь если где запнулся. Может минут через эннадцать что получше в голову придет :)
← →
PVOzerski (2003-09-11 12:05) [3]Можно, правда не так, как это описано в учебниках по "стандартному" Паскалю. Для этого Borland ввел процедурные переменные, но конструкции типа function aaa(function bbb:char):integer; их Паскали не поддерживают. Придется описывать процедурный тип и делать параметр этого типа. Не знаю, может, procedure без параметров и пройдет как тип параметра (проверять лень), но это был бы очень частный случай.
← →
jack128 (2003-09-11 12:15) [4]
> но конструкции типа function aaa(function bbb:char):integer;
> их Паскали не поддерживают
Делфи вроди их тоже не поддерживает
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.015 c