delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
怎样翻译这段C代码 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061201065700143.html
调用Dll文件中的一个函数  
  int   ret;  
  char   *   host_list[3]   =   {"192.168.0.2",   "192.168.0.3",   ""};  
   
  //   初始化布控函数库  
  ret   =   READCD(host_list);  
   
  其中READCD是DLL文件定义的函数,声明如下  
  int   READCD(char   **   host_list);  
   
  谢谢!

var  
      ret:integer;  
      host_list:array[0..2]   of   pchar;  
  begin  
      host_list[0]:=pchar('192.168.0.2');  
      host_list[1]:=pchar('192.168.0.3');  
      host_list[2]:=pchar('');  
      ret:=READCD(host_list);  
  ...  
  end;

ret:=READCD(@host_list);

我写的代码是动态分配数组的即   SetLength(Host_list,3),运行一运行就跳出内存地址错误,不知哪位朋友能否赐教?  
   
  这是我写的  
  function   READCD(host_list:Pointer):integer;stdcall;external   'RCode.dll';  
   
  var  
  i:integer;  
  host_list:array   of   pchar;  
  begin  
          i:=-1;  
          SetLength(host_list,3);  
          host_list[0]:='192.168.1.1';  
          host_list[1]:='192.168.1.2';  
          host_list[2]:='192.168.1.3';  
          i:=READCD(@host_list);  
          ShowMessage(IntToStr(i));  
  end;

个人认为问题应该在你的function   READCD里

i:=READCD(@host_list[0]);  
  //                                       ~~

host_list:array   of   pchar;  
   
      你用的是PCHAR   需要NEW一下才能使用  
  host_list[0]:='192.168.1.1';  
   
 

强烈鄙视问题解决后不结贴的人!  
  强烈鄙视技术问题解决后把贴子转移到非技术区的人!  
  鄙视你们!  
   
  http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659

posted on 2008-09-23 09:37 delphi2007 阅读(146) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。