![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать в функцию как аргумент - тоже фукцию?
Хрюндель © (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]Можно. Через адрес. @