一: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)

解决方案 »

  1.   

    >>那么在delphi中要线程循环的话,需要这么处理嘛?
    應該類似, 沒什麼區別>>二: BCB中通过Synchronize(SendAd);来同步控制其他窗体
    需要>>三:bcb中同步函数定义为 void CALLBACK 
    function xCallBack(xmitlen: Longint;buflen: integer;buf: pchar;flen:Longint): Longint; stdcall;
      

  2.   

    if IsMM(LouZhu) then
      ShowMessage('MK')
      

  3.   

    while not Terminated do
    begin
      GetAd;
      Synchronize(SendAd);
    end;
            
      

  4.   

    如下代码有个疑问
     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线程里面只执行一次还是循环执行???
      

  5.   

    我贴出的delphi回调函数里面,就对控件操作了,没用同步机制啊
    郁闷