Форум: "Начинающим";
Текущий архив: 2014.04.27;
Скачать: [xml.tar.bz2];
Внизпроцедура по имени Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.001 c