C中的byte * 对应delphi中的什么类型? ( 积分: 100 )

  • 主题发起人 主题发起人 ztszts
  • 开始时间 开始时间
Z

ztszts

Unregistered / Unconfirmed
GUEST, unregistred user!
我有c里写的DLL要调用,它的参数类型是byte *;
我在DELPHI声明时应该用什么数据类型啊?
急!!!
先谢了
 
pbyte or pchar
 
[:D][:D][:D][:D][:D][:D][:D][:D]
 
你试一下看看 好象是这样的
 
一个C写的DLL,vb中调用是这样声明的
Public Declare Function GetDataEx Lib "DataLib" (ByRef bpData As Byte, ByVal dwTimeOut As Long) As Long
我在DELPHI里写成这样,调用就会报错,VB里就没有问题
var
GetDataEx: function(var bpData: PByte;
dwTimeOut: LongInt): DLLEXPORT {$IFDEF WIN32} stdcall {$ENDIF};
VB里调用的时候是这样的
Public m_pData1(57344) As Byte
dwRet = GetDataEx(m_pData1(0), 5000)
我没用过VB,不理解m_pData1(0)是什么意思?
那位大侠帮忙解释一下
我在DELPHI里试了byte和pbyte都不行
 
会不会是数组??
m_pData1是一个Byte数组,m_pData1(0)是第一个元素
 
是的,数组我也试验了,可还是不对。
它的参数应该是指针传递,可我试验还是通不过
 
多人接受答案了。
 
1 GetDataEx: function(bpData: PByte;
dwTimeOut: Smallint): DLLEXPORT stdcall
或者
2 GetDataEx: function(var bpData: Byte;
dwTimeOut: Smallint): DLLEXPORT stdcall
这两个都行.但你Var和PByte结合就不行.嘿嘿.
另外.如果你是VB6的话Long对应的是Delphi的Smallint.
m_pData1(0)是数组的第一个元素.
Delphi中
var
m_pData1 : array[0..57344-1] of Byte;
上面两种声明方式对应的调用方式分别是
1 dwRet := GetDataEx(@m_pData1, 5000);
2 dwRet := GetDataEx(m_pData1[0], 5000);
 
后退
顶部