gpt4 book ai didi

delphi - MsComm ActiveX 是否与 Delphi 2010 兼容?

转载 作者:行者123 更新时间:2023-12-03 18:34:19 25 4
gpt4 key购买 nike

我已将我们的项目从 Delphi 7 移植到 Delphi 2010。添加一些类型转换后,现在我的项目运行良好,所有功能都正常工作,除了绑定(bind)到 COM 端口和 MSCOMM ActiveX 组件的程序的主要功能。

它可以从 COM 端口读取和写入,但似乎有问题,因为连接到他端口的设备返回错误代码,尽管它在 Delphi7 中使用相同的代码正常工作。在代码中,您可以在向设备发送一些字节后看到下面的一个字节作为校验和发送。另一方面,如果接收到的校验和与计算的校验和相等,则设备获取字节并使用相同的公式计算校验和,设备返回“O”为正常,否则返回“E”为错误。 OutCom被定义为Olevariant。

OutCom := chr(ord(Fbyte));
Mscomm1.Output := OutCom;

OutCom := chr(ord(Sbyte));
Mscomm1.Output := OutCom;

OutCom := chr(ord(DigitOne));
Mscomm1.Output := OutCom;
OutCom := chr(ord(DigitTwo));
Mscomm1.Output := OutCom;
OutCom := chr(ord(DigitThree));
Mscomm1.Output := OutCom;
SumOfBits := (System_No - 1) + Fbyte + Sbyte + DigitOne + DigitTwo + DigitThree;

CheckSum := ( (SumOfBits mod 256) xor 255 ) + 1;

OutCom := chr(ord(CheckSum));
Mscomm1.Output := OutCom;

OutCom := 'E';
Mscomm1.Output := OutCom;
OutCom := 'N';
Mscomm1.Output := OutCom;

Delphi 2010 中的相同代码返回不同的结果。我猜 chr() 函数返回的结果与 Delphi7 不同。如果这是真的,那么我怎样才能获得一个字节的 Ascii char,或者有没有办法将一个字节传递给 Mscomm 而无需转换为 char?

最佳答案

客服现在返回 Unicode 宽字符 (在 Delphi 2009 之前,它返回一个单字节 AnsiChar )。

最简单的解决方案是将字节值类型转换为 ansischar :

var_ansichar := AnsisChar(var_byte);

而不是使用 Chr()。但请注意 Mghie说。确保您的组件、声明的变量等的类型正确(AnsiChar、AnsiString 等)。

关于delphi - MsComm ActiveX 是否与 Delphi 2010 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com