Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-21413
vitnt2000
2002-10-18 08:55
2002.11.07
Как добавить к таблице новое поле и не убить данные?


1-21609
riland
2002-10-25 15:25
2002.11.07
Миграция приложений и компонент с D5 на D6


14-21783
Igorenia
2002-10-18 00:25
2002.11.07
необходимо написать развитый help, на подобии тех, которые присут


1-21603
Stream2k
2002-10-25 18:40
2002.11.07
Как по нажатию SpeedButton загрузщить файл file1.htm в браузер...


14-21773
AL2002
2002-10-17 12:46
2002.11.07
Что читать?