DLL是VC++写的,没有源码。
别人给了一个VB的例程,如下:
Public Declare Function u_E555_CheckPsw Lib "HTReader.dll" (ComData As COMDATA, ByVal btMode As Byte, ByRef btPsw As Byte) As IntegerCOMDATA的类型定义:
Type COMDATA
sComPort As Integer
sDevID As Integer
ucReturn(0 To 23) As Byte
End TypebtPsw的声明: Dim btPsw(0 to 3) as Byte转成了Delphi代码后是这样:
Function u_E555_CheckPsw(ComDat: PComData; btMode: integer; btPsw: Pointer): Integer; stdcall; External 'HTReader.dll';COMDATA的定义:
PComData = ^TCOMDATA;
TCOMDATA = packed record
sComPort: short;
sDevID: short;
ucReturn: array [0..23] of byte;
End;btPsw: array [0..3] of byte;在执行给函数的时候也不报错,但就是返回的值不对。一直找不到原因
别人给了一个VB的例程,如下:
Public Declare Function u_E555_CheckPsw Lib "HTReader.dll" (ComData As COMDATA, ByVal btMode As Byte, ByRef btPsw As Byte) As IntegerCOMDATA的类型定义:
Type COMDATA
sComPort As Integer
sDevID As Integer
ucReturn(0 To 23) As Byte
End TypebtPsw的声明: Dim btPsw(0 to 3) as Byte转成了Delphi代码后是这样:
Function u_E555_CheckPsw(ComDat: PComData; btMode: integer; btPsw: Pointer): Integer; stdcall; External 'HTReader.dll';COMDATA的定义:
PComData = ^TCOMDATA;
TCOMDATA = packed record
sComPort: short;
sDevID: short;
ucReturn: array [0..23] of byte;
End;btPsw: array [0..3] of byte;在执行给函数的时候也不报错,但就是返回的值不对。一直找不到原因
解决方案 »
- Socket阻塞模式
- 请不要发表可能给我们带来伤害的言论,谢谢配合
- tdxdbedit控件文字闪一闪的问题,详情请进有高分
- 获取文件名
- Ole控制Excel保存文件是出错!
- 怎么给我的Form上的Button1一个快捷键,比如F2
- DELPHI8(DELPHI FOR .NET)几天装了,大家谈谈对这个DELPHI8的看发!
- merry christmas!想學delphi,希望大家介紹幾本比較基礎的書,最後能在網上下載的。
- 关于一个读取内存地址的问题!
- 关于delphi6和BCB5之间问题,高手请进行!!!!!!
- 一个简单问题却把我搞糊涂了,请帮我找出原因!谢谢!
- delphi调用DLL简单问题,请教各位
32位器的INT默认都是4字节,连linux的GCC也是如此
回复人:superyys(无血野人) ( 五级(中级)) 信誉:9 2007-01-28 10:29:46 得分:0
?
哈哈,,,,,,,,,,,,,,,,,,VB才菜,还停留在16机的水平.
32位器的INT默认都是4字节,连linux的GCC也是如此
================================================VB的三十二位是Long,和Delphi中的Integer相同。