gpt4 book ai didi

delphi - 无法分配左侧 - bool 值(RecBuf [0]):= false

转载 作者:行者123 更新时间:2023-12-03 18:05:47 24 4
gpt4 key购买 nike

我正在将旧代码从 Delphi 5 转换到 XE5。它有这段代码:

Boolean(RecBuf[0]) := False;

RecBuf 是 PChar。这适用于 Delphi 7,但不适用于 XE5。在 XE5 中,它给出了“Left side cannot assign”错误。如何在XE5中实现这段代码?

最佳答案

在 Delphi 7 中,PCharPAnsiChar 的别名。即指向 8 位 ANSI 字符的指针。这意味着 RecBuf[0] 的类型为 AnsiChar。由于 AnsiCharBoolean 具有相同的大小,因此转换有效。

在Delphi XE5中,PCharPWideChar的别名,指向16位宽字符。因此 RecBuf[0] 的类型为 WideChar。因此转换无效,因为 WideCharBoolean 具有不同的大小。

无法从您在此处显示的代码中看出解决问题的最佳方式。您很可能需要重新声明 RecBuf。也许它需要声明为 PAnsiChar。尽管有人确实想知道为什么要将字符转换为 Boolean

另一种可能性是 RecBuf 被声明为 PChar 的原因是允许您使用索引运算符 [],这在旧版本的 Delphi 是一种特殊的字符类型指针功能。在现代 Delphi 中,您可以使用 {$POINTERMATH ON} 为所有类型化指针启用该功能。所以,如果您这样做了,那么也许 RecBuf 应该是 PBoolean

最重要的是,虽然我们可以解释为什么编译器会提示您的代码,但我们无法为您提供明确的解决方案。

关于delphi - 无法分配左侧 - bool 值(RecBuf [0]):= false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26237241/

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