Hi, everybody,
I have a Specialize TObjectList in my main program
I don't user TObjectList , I don'tv use TForm ...
If you need other routine form outside (.eg. Call function from cpkunzip.dll) as
thread , I use this unit. Already I tested in old'Lazarus , but in Lazarus 4.0,
I don~t known, the results are good Or Bad.
All your calledfunction must have this format.
Var body_fas_corogyes:=Addr(YouRFunction);
Var fas_addtolog:tap_AddtoLog=nil;
fas_addtobar:tap_AddtoLog=nil;
fas_instolog:tap_AddtoLog=nil;
fas_copsfill_acideecho:tap_copsfill_acideecho=nil;
fas_copsfill_acidechon:tap_copsfill_acidechon=nil;
fas_body_Batch2Aseembler:procedure=nil;
body_fas_hyperlinkdisplaytooltip:function(p:pchar):integer=nil;
body_fas_corogyes:function(p:pchar):integer=nil;
body_fas_fartvlax:function(p:pchar):integer=nil;
body_fas_cleardiropenttd:function(p:pchar):pchar=nil;
// HERE is NY-TOP-CALLER **
Function Spec_try_Parallel10Invoke(cmdc:Tmcmde):Integer;
Begin
result:=0;
with kSpec_Thread do
Begin romania:='SetConsole';
DemoStart:=pcje; //rem: search equal zero
if (DemoStart<0) then
Begin Don1(0);
DemoStart:=0;
End;
case cmdc of
kMcmde_Myes: han[DemoStart]:=BeginThread(nil,0,Addr(body_fas_corogyes),pchar('2'),0,m_dwThreadId[DemoStart]);
kMcmde_Moka: han[DemoStart]:=BeginThread(nil,0,Addr(body_fas_corogyes),pchar('1'),0,m_dwThreadId[DemoStart]);
kMcmde_MfartVlax:han[DemoStart]:=BeginThread(nil,0,Addr(body_fas_fartvlax),pchar('1'),0,m_dwThreadId[DemoStart]);
kMcmde_Mclear0DirOpenTtd:han[DemoStart]:=BeginThread(nil,0,Addr(body_fas_cleardiropenttd),pchar('1'),0,m_dwThreadId[DemoStart]);
End;//off("body_run_corogyes")
exit;
End;
if (kSpec_thread.DemoStart<0) then begin result:=RTCAN;exit;end;
kSpec_Thread.Done();
end;
Type tap_fncall=function(p:pchar):integer;
Var kSpec_Thread:TBegin_Thread;
How to call this unit?
Function AutorunIterator_ctrlP(cmdcmdline:pchar):Integer;
Begin
result:=0;
with kSpec_Thread do
Begin romania:='SetConsole';
stPeekConsoleInputA(1);
if (cmdcmdline>kzeropch)and(strlen(cmdcmdline)>100) then
wmakebat.txt:=strpas(cmdcmdline);
DemoStart:=pcje; //rem: search equal zero
if (DemoStart<0) then
Begin Don1(0);
DemoStart:=0;
End;
han[DemoStart]:=BeginThread(nil,0,
Addr(body_fas_hyperlinkdisplaytooltip),
nil,
0,
m_dwThreadId[DemoStart]);
if (cmdcmdline<>nil) and (nil<>StrPos(cmdcmdline,'autolink.txt=')) then result:=0 else
if (cmdcmdline<>nil) then result:=1;
exit;
End;
if (kSpec_thread.DemoStart<0) then begin result:=RTCAN;exit;end;
kSpec_Thread.Done();
end;
Eu multumesc ArsenieBoca. Doamne ajuta
Var AcDbEvalConnectable__ctrlP:array[Byte] of TThreadFunc;
Function Cograxono_AcGiSpotLightTraits:integer;
Var hpGapTol:Integer;
Begin
result:=RTREJ;
with kSpec_Thread do
Begin
DemoStart:=pcje; //rem: search equal zero
if (DemoStart<0) then
Begin Don1(0);
DemoStart:=0;
End;
result:=RTNORM;
for hpGapTol:=0 to 255 do
if (@AcDbEvalConnectable__ctrlP[hpGapTol]<>nil) then
Begin
han[DemoStart]:=BeginThread(nil,0,AcDbEvalConnectable__ctrlP[hpGaptol],
Addr(WhipThread[DemoStart]),
0,
m_dwThreadId[DemoStart]);
inc(DemoStart);
End;
result:=RTNORM;
End;
End;
PreCall Here================
AcDbEvalConnectable__ctr[01]:=nil;
cDbEvalConnectable__ctrlP[0]:=Addr(AcDbEvalContextIterator__UnzipTest_and_ShowGifInternal);
Const RTNORM=5100;
RTMINILEN = (-5013);
RTCAN=(-5002);
RTCAN0=(-5002);
RTREJ=(-5003);
RTREJ0=(-5003);
RTFAIL=(-5004);
RTKWORD= (-5005);
RTINPUTTRUNCATED =(-5008);
RTfast=(-5009);
RTslow=(-5010);
RTSKIP=(-5011);
RTQUIT=(-5012);

Thank you... Click here Click here Doamne ajuta, Multumesc, G\Thank you. GraciasMy Solution is outside of TForms, because , I need call
other function/s from external 'DLL.