vc中的函数为:
int connect_to(char *host,dpl_port_t port,conn_desc *conn);
在delphi怎么写参数?
我写的:
Tconnect_to=function(host:string;port:integer;conn:conn_desc):integer;其中:conn_desc为结构类型源程序:procedure TForm1.Button1Click(Sender: TObject);
var
Handle: THandle;
fhz: integer;
connect_to:Tconnect_to;
conn:conn_desc;
begin
    Handle := LoadLibrary('api.dll');
    if Handle <> 0 then
    begin
       @connect_to:= GetProcAddress(Handle, 'connect_to');
       fhz:= connect_to('192.168.0.91',1234,conn);
    end;
    FreeLibrary(Handle);end;vc中调用此函数正确,delphi中如何调用?????
我把host:string 改为host:pchar也不对,提示connect_to不足够实际参数;
fhz难接近的这里由于优化!!!!!!!

解决方案 »

  1.   

    host为PChar型,conn:conn_desc;改为conn:^conn_desc,因为它是个指针类型
      

  2.   

    好象不对吧?我改了后连编译都没过哟!
    Tconnect_to=function(host:pchar;port:integer;conn:conn_desc):integer;
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Handle: THandle;
    fhz: integer;
    connect_to:Tconnect_to;
    conn:^conn_desc;
    begin
        Handle := LoadLibrary('api.dll');
        if Handle <> 0 then
        begin
           @connect_to:= GetProcAddress(Handle, 'connect_to');
           fhz:= connect_to('192.168.0.91',1234,conn);    //错在这行,不相容类型
        end;
        FreeLibrary(Handle);end;
      

  3.   

    你在聲明中就要改了:
    Tconnect_to=function(host:pchar;port:integer;conn:conn_desc):integer;
    改為如下
    Tconnect_to=function(host:pchar;port:integer;conn:^conn_desc):integer;conn:^conn_desc;
    begin
    改為:
    conn: conn_desc;
    fhz:= connect_to('192.168.0.91',1234,conn);    //错在这行,不相容类型
    改為:
    fhz:= connect_to(pchar('192.168.0.91'),1234, @conn);    
      

  4.   

    你的host类型应该没什么问题,问题出在conn:^conn_desc,不能这样定义:Tconnect_to=function(host:pchar;port:integer;conn:^conn_desc):integer;建议这样修改:
    1、定义结构类型指针:
        Type conn_desc = ……     //保持原来的结构不变(注意字节对齐)
             pConn = ^conn_desc;  //这才是要定义的类型名:pConn2、函数声明:    Tconnect_to=function(host:pchar;port:integer;conn:pConn ):integer;3、函数调用:
        conn:pConn                                           //定义的变量
        fhz:= connect_to(pchar('192.168.0.91'),1234, @conn);  //函数调用