易语言调入DELPHI7写的代码?怎么转成易语言使用的DLL格式?有会的帮助整理下。

一、动态库说明(1)该动态库接口所适用的卡类型:SLE4442、SLE5542。(2)“btlock55.dll”这个文件是调用读写卡函数的动态库。(3)“mwic232... 一、动态库说明
(1) 该动态库接口所适用的卡类型:SLE4442、SLE5542。
(2) “btlock55.dll”这个文件是调用读写卡函数的动态库。
(3) “mwic232.dll”这个文件是调用明华 IC 串口读卡器的驱动, “zyic32.dll、
EasyD12.dll”这两个文件是调用致远 IC USB 读卡器的驱动。
二、 “btlock55.dll”库函数说明(语言:DelPhi7)
(1) function Write_Guest_Card(Port: Byte; HotelID, HotelPwd: PChar; CardNo,
GuestSN, GuestIdx: Integer; DoorID, SuitDoor, PubDoor, BeginTime, EndTime:
PChar): Integer;

(2) function Read_Guest_Card(Port: Byte; HotelID, HotelPwd: PChar; var CardNo,
GuestSN, GuestIdx: Integer; DoorID, SuitDoor, PubDoor, BeginTime, EndTime:
PChar): Integer

(3) function Bin_Hex(Dest: PChar; Source: PChar; Len: Integer): Integer
说明:二进制字符串转十六进制字符串。
参数说明:
Dest:目的十六进制字符串。
Source:原二进制字符串。
Len:原二进制字符串长度。
参数返回:0为转换成功,-1 为不转成功。
(4) function Hex_Bin(Dest: PChar; Source: PChar; Len: Integer): Integer
说明:十六进制字符串转二进制字符串。
参数说明:
Dest:目的二进制字符串。
Source:原十六进制字符串。
Len:原十六进制字符串长度。
参数返回:0为转换成功,-1 为不转成功。
(5) function SerialNo_FromNow():Integer;
说明:通过本地电脑的时间换算出 4个字节的整型流水号,可以用此作为宾客卡号和宾
客流水号的值。
参数返回:> 0 当前电脑时间的整型流水号。
同。
5、更改酒店密码时,密码一定要 6 位字符串。
6、有效时间的值一定要 14 位,年、月、日、时、分、秒。
(1) function Write_Guest_Card(Port: Byte; HotelID, HotelPwd: PChar; CardNo,
GuestSN, GuestIdx: Integer; DoorID, SuitDoor, PubDoor, BeginTime, EndTime:
PChar): Integer;

(2) function Read_Guest_Card(Port: Byte; HotelID, HotelPwd: PChar; var CardNo,
GuestSN, GuestIdx: Integer; DoorID, SuitDoor, PubDoor, BeginTime, EndTime:
PChar): Integer

(3) function Bin_Hex(Dest: PChar; Source: PChar; Len: Integer): Integer

(4) function Hex_Bin(Dest: PChar; Source: PChar; Len: Integer): Integer

(5) function SerialNo_FromNow():Integer;

------------以上代码怎么转换成下面的代码格式,其实就是这点问题。
.版本 2

.DLL命令 _查找子窗口, 整数型, "user32", "FindWindowExA", , 本子程序采用【精易编程助手】生成
.参数 参数_父窗口句柄, 整数型
.参数 参数_子窗口, 整数型
.参数 参数_类名, 文本型
.参数 参数_标题, 文本型
展开
 我来答
gk_wei
2012-04-12 · TA获得超过1730个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:442万
展开全部
易语言不了解,但是不同语言之间调用需要注意“调用约定”问题,即参数传递方式和堆栈平衡方式,如果双方的约定不一样,就会出一些看起来莫名其妙的问题。

补充:
根据你给的这个,感觉应该写成这样:

.DLL命令 _写客户卡, 整数型, "btlock55.dll", "Write_Guest_Card", , 本子程序采用【精易编程助手】生成
.参数 参数_端口, 字节型
.参数 参数_宾馆代号, 文本型
.参数 参数_宾馆密码, 文本型
.参数 参数_卡号, 整数型
.参数 参数_客户号, 整数型
.参数 参数_客户索引, 整数型
.参数 参数_门代号, 文本型
.参数 参数_Suit门, 文本型
.参数 参数_Pub门, 文本型
.参数 参数_开始时间, 文本型
.参数 参数_结束时间, 文本型

其实这个写起来简单,你只要好好看看易语言的资料就行,问题在于我说的“调用约定”。
如果这个btlock55.dll库使用Delphi7写的,并且是你给出的函数定义方式,那么这些参数的传递是:Port放到寄存器EAX; HotelID的指针放到EDX; HotelPwd的指针放到ECX;然后从CardNo到EndTime压入堆栈,整数型直接入栈整数的值,PChar型入栈指针。这是这个库对调用方的要求,如果易语言调用的时候不是这样的,那就会造成参数对应不起来。另外这个函数在返回前会处理堆栈指针,它会按照入栈8个参数,在返回前把堆栈指针加上8*4=32字节,如果易语言调用后自己平衡堆栈,就会把堆栈指针改乱了。
追问
我是刚入门易语言的新手,对其他的语言更是不懂。你说的太深奥,我有点看不明白。但我照你说的写的DLL,可是读取的时候就软件错误。有QQ吗?帮我解决下吧。我的QQ:28070313
追答
易语言我也不懂,你为什么要用易语言?找个易语言的高手问一下吧。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式