VB的程序如何转换成DELPHI的程序,调用DLL总报错(300分)

  • 主题发起人 主题发起人 LSS
  • 开始时间 开始时间
L

LSS

Unregistered / Unconfirmed
GUEST, unregistred user!
厂家仪器DLL调用方法:<br>short data_comm( char command,<br> int in_len,<br> unsigned char *_in,<br> int out_len,<br> unsigned char *_out,<br> int retlen,<br> char *status);<br>用于向串口发送接收数据<br><br>厂家给的VB例子:<br>&nbsp; &nbsp; Dim yInData(100) As Byte<br>&nbsp; &nbsp; Dim yOutData(100) As Byte<br>&nbsp; &nbsp; k = data_comm(1, 1, yInData(0), 0, yOutData(0), RetLen, status)<br><br>我的程序delphi:<br>...<br>function data_comm(command:integer;in_len:integer;_in:pchar;out_len:integer; _out:pchar;retlen:integer;status:char):integer;stdcall;external 'getdata.dll';<br>...<br>function ...<br>var<br>ret,buf_len:integer;<br>status: char;<br>Buffer: string;<br>Buf: string;<br>begin<br>&nbsp; &nbsp;...<br>&nbsp; &nbsp;ret := data_comm(1, 1, pchar(buffer), 0, pchar(buf), buf_len, status );<br>&nbsp; &nbsp;...<br>为何一执行时就出异常<br>
 
function ...<br>var<br>ret,buf_len:byte; &nbsp; &nbsp; &nbsp; &nbsp; ****************<br>status: char;<br>Buffer1: ^p; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;***************<br>Buf1: ^p; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ***************<br>begin<br>&nbsp; &nbsp;...<br>&nbsp; &nbsp;buffer := New(buffer1);<br>&nbsp; &nbsp;buf:=New(buf)<br>&nbsp; &nbsp;ret := data_comm(1, 1, pchar(buffer), 0, pchar(buf), buf_len, status );<br>
 
过是什么答案?<br>^p是什么?<br>我试着用array[0..255] of char类型<br>也不好使,出同样的错误
 
你的dll可能不支持其他语言,你用vc试验一下<br>或者 你把 stgcall去掉试验一下<br>
 
DLL与硬件已经能够通讯,能传送数据,硬件已经能接收到,我估计是在返回值时出现问题的<br>是否和定义类型有关系,请诸位指教,另何处有VB代码转换成PAS的工具,我想试试看行否?<br>我以前见过,可是现在找不到,如好使也给分,如不够可加200分,急
 
两个char*的类型应该预先申请内存空间。
 
to expect:不会用VC,stdcall去掉不好使,连发都不行了,硬件设备接收不到<br>不可能不支持其它语言吧<br>to pan ying:使用pchar需申请空间,使用array[0..255]of char 不用申请空间吧<br>给好心的人:什么地方有vb2delphi,好使不好使呀<br><br>
 
status传的应该是地址,不是数值,<br>函数靠这个地址返回值
 
short data_comm( char command,<br> int in_len,<br> unsigned char *_in,<br> int out_len,<br> unsigned char *_out,<br> int *retlen,<br> char *status);<br>&lt;最后两行有两个“*”号,我想是所带材料印错了&gt;<br>功能: 与STAR-722通讯,交换数据<br>入口: <br> command: &nbsp; 命令代码<br> in_len: 输入数据长度<br> _in: 输入数据<br> out_len: 预期返回数据长度<br> _out: 返回数据<br> retlen: 实际返回数据长度<br> status: 返回状态值<br>返回: <br>另有200分已经在问题654033中
 
我的问题已经解决,是指针类型问题
 
多人接受答案了。
 
后退
顶部