1.  prcvbuff是接收缓冲区
2.  对,但不是最好的,最好定义一个过程指针.

解决方案 »

  1.   

    1.  prcvbuff是接收缓冲区
    2.  对,但不是最好的,最好定义一个过程指针.
      

  2.   

    whoo大仙,谢谢,
      我有如下做法请指教!
    ****************************
    unit uDllDeclare;interface
    type
      pCallPro:procedure(pReceiveBuff:pString;iBuffLen:Integer);
    end;
      procedure SetSWSratusCallBack(fpProc:pCallPro);cdecl;
      function SendCMDToCOMM(pReceiveBuff:pString;iBuffLen:Integer):Integer;cdecl;implementationfunction SetSWSratusCallBack;external 'dllname.dll'  ;
    function SendCMDToCOMM;external 'dllname.dll'  ;end;//************以上为声明单元****************//***********在其他窗体*********** 
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure myCallpro(pRecBuff:pstring;iBufflen:integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
     use uDllDeclare ;{$R *.DFM}
    procedure TForm1.myCallPro(pRecBuff:pstring;iBufflen:integer);
    begin
     //do something ; 
    end;procedure TForm1.FormCreate(Sender: TObject);
    var 
        CallPro:pCallPro;    //是否需要?
        pmyBuff:pstring;
        sStirng:string;  
    begin
     sString:='my string ';
     pmyBuff:=@sString;
     CallPro:=myCallPro(pmyBuff,Length(sString)); //是否需要?
     SetSWSratusCallBack(CallPro) ;   
     //或不定义 var CallPro:pCallPro 及
     // CallPro:=myCallPro(pmybuff,Length(sString))
     // 直接 SetSWSratusCallBack(myCallPro(pmybuff,Length(sString));end;
    end.
    **********************************
    可否?
    谢谢!!
        
      

  3.   

    1、似乎要在所有和dll有关的函数后加stdcall,自己定义的回调函数也要加stdcall;2、CallPro:=myCallPro(pmyBuff,Length(sString)); 似乎可以,不行的话写成这样:
    CallPro:=@myCallPro(pmyBuff,Length(sString)); 
      

  4.   

    1,如果是类的过程指针,应该是 type   ... procedure... of object;而不能是type... procedure.
    2,均不需要.
    3,SetSWStatusCallBack(CallPro);
    4,Delphi与C共用时最好不要用String,pString;String是Delphi维护的,与C不一定兼容.最好用
    PChar(for Delphi),Char * (for C)