Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Указатель на функцию


Автор: Limonadni Joe 8.12.2003, 13:23
Есть ли такое понятие как указатель на функцию? Мне надо, чтобы в какой-нибудь переменной хранился указатель на функцию и чтобы эту функцию можно было вызывать через эту переменную? Как такое сделать?

Автор: Monty 8.12.2003, 14:24
Я делаю все через одно место smile.gif
Код
var
 teZt_offset: integer;
 teSt_offset: integer;

procedure teZt;
begin
 halt;
end;

procedure teSt(Time: integer);
begin
 Sleep(Time);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 asm
   mov teZt_offset, offset teZt;
   mov teSt_offset, offset teSt;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 asm
   call teZt_offset;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 asm
   push 1000;
   call teSt_offset;
 end;
end;

Автор: Vit 8.12.2003, 18:02
@MyFinction - указатель на функцию MyFinction

Автор: Петрович 9.12.2003, 18:19
Цитата(Vit @ 8.12.2003, 18:02)
@MyFinction - указатель на функцию MyFinction

Позволю себе немного расширить твой ответ, до примера Monty (пардон, но у него и правда через одно место smile.gif)
Код

type
 THaltProc = procedure;
 TSleepProc = procedure (Time: integer);

var
 HaltProc :THaltProc;
 SleepProc :TSleepProc;

procedure teZt;
begin
halt;
end;

procedure teSt(Time: integer);
begin
Sleep(Time);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 HaltProc   := teZt;
 SleepProc := teSt;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 HaltProc;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 SleepProc(100);
end;

Автор: dm9 13.12.2003, 00:05
Дам ещё ссылочку на обсуждаемую ранее тему:
http://forum.vingrad.ru/index.php?act=ST&f=2&t=9527&hl=asm

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)