![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать в функцию ссылку на другую функцию?
Guestt © (2010-09-24 18:10:00)Так, чтобы первая функция могла по этой ссылке вызывать переданную ей функцию.
Ega23 (2010-09-27 19:01:00) [1]
> Где именно и каким образом использовать?
И эти люди потом говорят, что юниты у них по нескольку десятков тыщ строк. И утверждают, что уменьшить их - невозможно. И что-то там ещё про нарциссизм было.
Это же основы. Не понимаю, как можно браться писать что-то серьёзное, не зная элементарных вещей.
_Юрий (2010-09-27 18:52:00) [2]
> Где именно и каким образом использовать?
TFormA = class
X1 : Integer;
end;
TFormB = class
end;
procedure TFormA1.Button1Click(Sender: TObject);
begin
X1 := 1;
FormB2.F(X1);
ShowMessage(IntToStr(X1); // Надо, чтобы показывало 2.
end;
function TFormB2.F(var aX1 : integer): boolean;
begin
aX1 :=2;
end;
Guestt (2010-09-27 05:24:00) [3]
> _Юрий (26.09.10 21:56) [6]
> Достаточно var - параметра.
Где именно и каким образом использовать?
_Юрий (2010-09-26 21:56:00) [4]Достаточно var - параметра.
Плохиш (2010-09-26 21:39:00) [5]Глюкодром.
Guestt (2010-09-26 19:58:00) [6]
> icWasya © (25.09.10 16:21) [3]
>
> А если функция на самом деле метод то
> type
> TCallback = function(A, B: integer): boolean of Object;
Да, "of object" я нашёл в исходниках. Но всё равно спасибо!
Ещё вопрос, вот такая передача нормальна? Нужно, чтобы через Y1 читать и ставить значение в X1.
TFormA = class
X1 : Integer;
end;
TFormB = class
Y1 : ^Integer;
end;
procedure TFormA1.Button1Click(Sender: TObject);
begin
X1 := 1;
FormB2.F(X1);
ShowMessage(IntToStr(X1); // Надо, чтобы показывало 2.
end;
function TFormB2.F(var aX1 : integer): boolean;
begin
Y1 := @aX1;
Y1^ := 2;
end;
icWasya (2010-09-25 16:21:00) [7]А если функция на самом деле метод то
type
TCallback = function(A, B: integer): boolean of Object;
function TForm1.F(A, B: integer): boolean;
begin
Result := A = B
end;
Guestt (2010-09-24 18:40:00) [8]Большое спасибо! :)
Юрий Зотов (2010-09-24 18:28:00) [9]
type
TCallback = function(A, B: integer): boolean;
procedure CallFunc(A, B: integer; Func: TCallback);
begin
if Func(A, B) then
ShowMessage('Yes')
else
ShowMessage('No')
end;
function F(A, B: integer): boolean;
begin
Result := A = B
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CallFunc(3, 5, F);
end;