Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать в функцию как аргумент - тоже фукцию?


Хрюндель ©   (2005-10-17 15:11:00) 

Или процедуру. Возможно ли такое вообще?


Джо   (2005-10-17 15:20:00) [1]


>  [5] Хрюндель   (17.10.05 15:15)
> Но это только для процедур?

Отчего же?

type
 TMyFunction = function (A: Integer): Integer;

function MyFunction (A: Integer): Integer;
begin
 Result := A+1
end;

procedure CallFunction (Func: TMyFunction);
begin
 Func (10);
end;

procedure TForm12.Button1Click(Sender: TObject);
begin
 CallFunction(MyFunction);
end;


Суслик   (2005-10-17 15:15:00) [2]

типа того

type
  Tm = procedure(a: integer) of object; // для передачи метода
  Tp = procedure(a: integer); // для передачи просто процедуры (т.е. не метода какого-либо класса)

procedure k(m: Tm; p: Tp);
begin
   m(1);
   p(1);
end;

type
  Tc = class
     procedure m(a: integer);
  end;

procedure Tc.m(a: integer);
begin
  ...
end;

procedure m(a: integer);
begin
  ...
end;

var
  c: Tc;
begin
  c := Tc.create().
  k(c.m, m);
end;


Хрюндель   (2005-10-17 15:15:00) [3]

2Гаврила ©   (17.10.05 15:13) [1]
Спасибо. Но это только для процедур?

2Ega23 ©   (17.10.05 15:13) [3]
А примерчик можно?


Гаврила   (2005-10-17 15:13:00) [4]

Запросто
Объявляй тип
TMyProcedure = procedure(x: integer);
или
TMyProcedure = procedure(x: integer) of Object; //если метод

и вперед

procedure DoSomeThing(proc: TMyProcedure);
begin
 proc(1);
end;


Digitman   (2005-10-17 15:13:00) [5]


> Как передать в функцию как аргумент - тоже фукцию

никак.


> Возможно ли такое вообще?


невозможно.

возможно лишь передать адресчего-либо. в т.ч. и адрес точки входа в некую ф-цию


Ega23   (2005-10-17 15:13:00) [6]

Можно. Через адрес. @


Наверх

Титульная страница Поиск, карта сайта Написать письмо