一:BCB中线程循环执行代码如下
while(!Terminated)
{
GetAd() ;
Synchronize(SendAd);
}
那么在delphi中要线程循环的话,需要这么处理嘛?二: BCB中通过Synchronize(SendAd);来同步控制其他窗体的控件,delphi中需要这样处理嘛?三:bcb中同步函数定义为 void CALLBACK FUN() 的形式 delphi中如何定义同步函数?
我看到一个是这样定义的
xCallBack(xmitlen:LongInt;buflen:LongInt;buf:PChar;flen:LongInt):
LongInt;stdcall;
如何变成bcb的函数?
如下翻译对不对?
int __stdcall xCallBack(long xmitlen, int buflen, char *buf, long flen)
while(!Terminated)
{
GetAd() ;
Synchronize(SendAd);
}
那么在delphi中要线程循环的话,需要这么处理嘛?二: BCB中通过Synchronize(SendAd);来同步控制其他窗体的控件,delphi中需要这样处理嘛?三:bcb中同步函数定义为 void CALLBACK FUN() 的形式 delphi中如何定义同步函数?
我看到一个是这样定义的
xCallBack(xmitlen:LongInt;buflen:LongInt;buf:PChar;flen:LongInt):
LongInt;stdcall;
如何变成bcb的函数?
如下翻译对不对?
int __stdcall xCallBack(long xmitlen, int buflen, char *buf, long flen)
應該類似, 沒什麼區別>>二: BCB中通过Synchronize(SendAd);来同步控制其他窗体
需要>>三:bcb中同步函数定义为 void CALLBACK
function xCallBack(xmitlen: Longint;buflen: integer;buf: pchar;flen:Longint): Longint; stdcall;
ShowMessage('MK')
begin
GetAd;
Synchronize(SendAd);
end;
xCallBack(xmitlen:LongInt;buflen:LongInt;buf:PChar;flen:LongInt):
LongInt;stdcall;
if (F_cancel )
{
xCallBack = -1; //中断传输
return ;
}
else //需要同步显示
{
Form1.RefreshStatus(xmitlen, flen, GxFname);
xCallBack = 0;
}
这个函数是有返回类型的函数,返回值难道就是xCallBack ?
我修改到bcb函数,说函数一定要有返回值
如下代码是delphi线程里面的代码
long ret = 0 ;
if (GDirection = 0)
ret = sio_FtZmodemTx(port,GxFname,xCallBack, 27);
else
fname = GrFname;
ret = sio_FtZmodemRx(Port, fname,1,rCallBack, 27);
请问上面的代码在delphi线程里面只执行一次还是循环执行???
郁闷