D3的串口程序在D5中出错(100分)

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

zzz

Unregistered / Unconfirmed
GUEST, unregistred user!
我用D3编写的串口通讯程序,在D5下编译出错:
WriteFile()的倒数第二个参数要求为Cardinal,在D3中我用的是integer
没有一点问题,在D5中编译出错,我改成LongInt后可以编译通过,但是传输
到接收端为乱码。
为什么?
 
把你的代码贴出来。
第二个参数应该是缓冲区地址吧
 
在Delphi 4(及以上版本)中, Cardinal和Integer已经不再是相同
的类型了. 在Delphi 4(及以上版本)中当函数调用的时候, var类型
的参数要求变量类型完全一致, 比如:

function A(var b:Cardinal):integer;

var i, c:integer; d:Cardinal;

begin

i:=a(c); //出错, 类型不匹配
i:=a(d); //正确
i:=a(Cardinal(c)); //正确, 强制类型转换

end;

此外, WriteFile中要考虑是否使用了Overlap方式, 如果是, 就
必须等待直到读取完成(或者写完成). 倒数第2个参数可以声明成
DWORD类型的.

 
接受答案了.
 
后退
顶部