如DLL中某个类的方法原型为:ConnectServ(in_addr *lpRemoteAddr,u_short usServPort)
请问在DELPHI中我该如何调用;另外,如果参数是结构体类型的又该如何调用呢?谢谢了!

解决方案 »

  1.   


    delphi 中 用^定义指针!
      

  2.   

    结构体对应为 record类型!使用上基本一样!
      

  3.   

    ConnectServ(lpRemoteAddr:^in_addr , usServPort:u_short)
      

  4.   

    楼主,先静下心来学学 Pascal 吧。方法有二:
    1:Pascal 里有指针,可这么写(请楼主看 Pascal 教材):
       ConnectServ(lpRemoteAddr:^in_addr; usServPort:u_short);2. 楼主用过 VB 吧?对于指针形的参数,在 VB 里用“As Addr”传。同样,在 Pascal 里可用“实参”:
       ConnectServ(var lpRemoteAddr: in_addr; usServPort: u_short);
      

  5.   

    to 楼上C++ 中 如果是 明显声明为 * 指针格式的 你还是传入指针的好
    而如果是传引用的话 类似 int cont(int& i)这样的 你可以参去 cont(var i:Integer)这样的式样与之匹配, 不然可能会出问题的。如DLL中某个类的方法原型为:ConnectServ(in_addr *lpRemoteAddr,u_short usServPort)
    请问在DELPHI中我该如何调用;另外,如果参数是结构体类型的又该如何调用呢?谢谢了!如何调用?
    type Pin_addr = ^in_addr;
    ConnectServ(lpRemoteAddr Pin_addr ,usServPort: WORD):TheReturnType.另外,如果参数是结构体类型的又该如何调用呢?谢谢了!
    这样调用可能会出现问题 因为VC/DELPHI堆结构体的处理可能会不同。
      

  6.   

    在delphi中定义和vc的类型一样就可以了
      

  7.   

    网络编程吧?哈哈,即然是VC的DLL,用VC写得了。
      

  8.   

    to  beyondtkl(大龙驹<逝追.弗瑞德>) :  API 里有多少需要传结构体?有多少要用指针?又有多少用 Delphi 调会出错?  老兄怕是太谨慎点了。  只要函数调用规范、数据内存对齐相同,怎么会出问题呢???