Текущий архив: 2002.11.07;
Скачать: CL | DM;
Вниз
Передача локальной процедуры в функцию в качестве параметра Найти похожие ветки
← →
BofA © (2002-10-29 20:37) [0]Примерно так:
type TProc=procedure(a:Integer);
function F(P : TProc);
begin
...
end;
function Main(...):...;
procedure P1(a:Integer)
begin
...
end;
begin
...
Tmp:=F(P1);
...
end;
В ответ на это ругается, говорит, что нельзя локальную процедуру передавать. Что можно сделать?
← →
down (2002-10-29 20:46) [1]ничего, нельзя локальную процедуру передать
← →
Peter Gluhiy © (2002-10-29 20:47) [2]А так устроит?
type TProc=procedure(a:Integer);
function F(P : TProc);
begin
...
end;
procedure P1(a:Integer)
begin
...
end;
function Main(...):...;
begin
...
Tmp:=F(P1);
...
end;
← →
BofA © (2002-10-29 21:02) [3]down Неужели всё так плохо?
Peter GluhiyК сожалению нет (я привёл только упрощённый пример, в программе всё сложнее).
← →
down (2002-10-29 21:22) [4]Можно обмануть компилятор, например, так:
F(TProc(@Proc1));
но это может привести к печальным последствиям
← →
VaS © (2002-10-29 21:27) [5]
type
TProc = procedure(i: integer);
procedure DoProc(Proc: Pointer);
begin
TProc(Proc)(45);
end;
procedure TForm1.Button2Click(Sender: TObject);
procedure Proc(i: integer);
begin
end;
begin
DoProc(@Proc);
end;
Страницы: 1 вся ветка
Текущий архив: 2002.11.07;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.014 c