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

Вниз

процедура по имени   Найти похожие ветки 

 
Vasa777   (2013-07-17 15:44) [0]

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

Сделал по аналогии с примеров из инета. Вроде все работает. Правильно ли тут все?

В Unit1;

...
var Form1: TForm1;mycan:boolean;

implementation

Uses MyMod;
...

Procedure Xx(Const Cur,All:Int64;Var Cancel:Boolean);
begin
application.ProcessMessages;
form1.caption:=inttostr(cur)+"/"+inttostr(all);
Cancel:=mycan;
end;

procedure TForm1.ButtonCancelClick(Sender: TObject);
begin
mycan:=true;
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
var h:string;
begin
mycan:=false;h:="";
if MyFunct(h,xx) then begin memo1.Clear;memo1.lines.Add("Result: "+h);end;
end;

В MyMod:

...
Type TMyPercent=Procedure(Const Cur,All:Int64;Var Cancel:Boolean); //***
...
Function MyFunc(Var s:String;Const MyPercent:TMyPercent=nil):Boolean;

Implementation
...

Function MyFunc(Var s:String;Const MyPercent:TMyPercent=nil):Boolean;
var Cur1,All1:Int64;Cancel1:Boolean;s1:string;
begin
result:=false;Cancel1:=False;s1:="";s:="";
...
.. тут цикл cur1:=0 to All1
if Assigned(MyPercent) then MyPercent(Cur1,All1,Cancel1);
if Cancel1 then Break;
.. конец цикла
if not cancel1 then begin s:=s1;result:=true;end;
end;

...

*** - вот тут не надо of Object?


 
RWolf ©   (2013-07-17 16:02) [1]

не надо.


 
Vasa777   (2013-07-17 16:04) [2]

остальное норм?


 
Cobalt ©   (2013-07-17 22:35) [3]

Vasa777, не забудь открыть модуль в среде и нажать Ctrl+D.



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

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

Наверх




Память: 0.47 MB
Время: 0.005 c
15-1383227337
брат Птибурдукова
2013-10-31 17:48
2014.04.27
"Сейчас позднее, чем ты думаешь"


2-1374264972
Vasa777
2013-07-20 00:16
2014.04.27
pbyte


2-1374245465
loser
2013-07-19 18:51
2014.04.27
Вызов функции из DLL в методе объекта


15-1383638933
Григорьев Иван
2013-11-05 12:08
2014.04.27
Как сохранить файл Excel?


15-1383681339
indeets
2013-11-05 23:55
2014.04.27
apache + php as module