Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.19;
Скачать: CL | DM;

Вниз

Как передать в функцию ссылку на другую функцию?   Найти похожие ветки 

 
Guestt   (2010-09-24 18:10) [0]

Так, чтобы первая функция могла по этой ссылке вызывать переданную ей функцию.


 
Юрий Зотов ©   (2010-09-24 18:28) [1]


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;


 
Guestt   (2010-09-24 18:40) [2]

Большое спасибо! :)


 
icWasya ©   (2010-09-25 16:21) [3]

А если функция на самом деле метод то
type
TCallback = function(A, B: integer): boolean of Object;

function TForm1.F(A, B: integer): boolean;
begin
Result := A = B
end;


 
Guestt   (2010-09-26 19:58) [4]


> 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;


 
Плохиш ©   (2010-09-26 21:39) [5]

Глюкодром.


 
_Юрий   (2010-09-26 21:56) [6]

Достаточно var - параметра.


 
Guestt   (2010-09-27 05:24) [7]


> _Юрий   (26.09.10 21:56) [6]
> Достаточно var - параметра.


Где именно и каким образом использовать?


 
_Юрий   (2010-09-27 18:52) [8]


> Где именно и каким образом использовать?


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;


 
Ega23 ©   (2010-09-27 19:01) [9]


> Где именно и каким образом использовать?


И эти люди потом говорят, что юниты у них по нескольку десятков тыщ строк. И утверждают, что уменьшить их - невозможно. И что-то там ещё про нарциссизм было.

Это же основы. Не понимаю, как можно браться писать что-то серьёзное, не зная элементарных вещей.



Страницы: 1 вся ветка

Текущий архив: 2010.12.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1285168987
Rembo2010
2010-09-22 19:23
2010.12.19
Как в Delphi сделать нестандартную форму?


15-1283933502
George
2010-09-08 12:11
2010.12.19
Поиск темы


2-1285509430
monxxie
2010-09-26 17:57
2010.12.19
Обработка Invalid use of keyword


10-1171452696
ajlekceu
2007-02-14 14:31
2010.12.19
Можно ли узнать кто до меня открыл файл в Excel?


2-1285224640
Сергей
2010-09-23 10:50
2010.12.19
подсказка в DBGrid