Главная страница
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.004 c
2-1374264972
Vasa777
2013-07-20 00:16
2014.04.27
pbyte


3-1297252094
Гость
2011-02-09 14:48
2014.04.27
Подскажите как получить таблицу-матрицу запросом в MSSQL


2-1374061475
Vasa777
2013-07-17 15:44
2014.04.27
процедура по имени


15-1383645741
Sign
2013-11-05 14:02
2014.04.27
COM объект на .NET вызов из Delphi


3-1297148421
Дмитрий С
2011-02-08 10:00
2014.04.27
Волшебство с * и двумя таблицами.