gpt4 book ai didi

delphi - W1024 组合有符号和无符号类型 - 扩大两个操作数

转载 作者:行者123 更新时间:2023-12-01 20:04:47 25 4
gpt4 key购买 nike

如何防止出现此警告?[DCC 警告] uFvSystem.pas(293): W1024 组合有符号和无符号类型 - 扩大了两个操作数

function LinkerTimestamp: TDateTime; overload;
begin
Result := PImageNtHeaders(HInstance + PImageDosHeader(HInstance)^._lfanew)
^.FileHeader.TimeDateStamp / SecsPerDay + UnixDateDelta;
end;

最佳答案

该错误消息表明您正在使用混合有符号和无符号操作数执行整数算术。唯一的整数算术在这里:

HInstance + PImageDosHeader(HInstance)^._lfanew

第一个操作数是无符号的,第二个操作数是有符号的,尽管它必须是正数。

您可以通过强制转换来抑制警告。最好在无符号上下文中执行算术,从而避免范围检查错误。因此,强制转换被放置在第二个操作数周围:

HInstance + NativeUInt(PImageDosHeader(HInstance)^._lfanew)

HInstance + Cardinal(PImageDosHeader(HInstance)^._lfanew)

如果您的旧版 Delphi 没有 NativeUInt

但是,您实际上是在对指针执行算术,所以我会这样写:

PByte(HInstance) + PImageDosHeader(HInstance)^._lfanew

PAnsiChar(HInstance) + PImageDosHeader(HInstance)^._lfanew

在较旧的 Delphi 版本中,PByte 不支持算术。

关于delphi - W1024 组合有符号和无符号类型 - 扩大两个操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430223/

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