Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизКак передать в функцию как аргумент - тоже фукцию? Найти похожие ветки
← →
Хрюндель (2005-10-17 15:11) [0]Или процедуру. Возможно ли такое вообще?
← →
Гаврила © (2005-10-17 15:13) [1]Запросто
Объявляй тип
TMyProcedure = procedure(x: integer);
или
TMyProcedure = procedure(x: integer) of Object; //если метод
и вперед
procedure DoSomeThing(proc: TMyProcedure);
begin
proc(1);
end;
← →
Digitman © (2005-10-17 15:13) [2]
> Как передать в функцию как аргумент - тоже фукцию
никак.
> Возможно ли такое вообще?
невозможно.
возможно лишь передать адрес чего-либо. в т.ч. и адрес точки входа в некую ф-цию
← →
Ega23 © (2005-10-17 15:13) [3]Можно. Через адрес. @
← →
Суслик © (2005-10-17 15:15) [4]типа того
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) [5]2Гаврила © (17.10.05 15:13) [1]
Спасибо. Но это только для процедур?
2Ega23 © (17.10.05 15:13) [3]
А примерчик можно?
← →
Джо © (2005-10-17 15:20) [6]
> [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;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.063 c