gpt4 book ai didi

delphi - 64 位 XE2 中的 Integer()

转载 作者:行者123 更新时间:2023-12-03 15:42:28 25 4
gpt4 key购买 nike

在 XE2 的 64 位平台上这是否正确?

type
PRGB24 = ^TRGB24;
TRGB24 = packed record
B: Byte;
G: Byte;
R: Byte;
end;

var
s1: pRGB24;
ptrD: integer;

....

inc(Integer(s1), PtrD); <- gives error here "Left side cannot be assigned to"

最佳答案

在 64 位平台上,整数类型为 32 位长,指针类型为 64 位长,因此会出现错误。我现在无法测试,但是

inc(NativeInt(s1), PtrD);

应该可以解决这个问题。

<小时/>

顺便说一句:Inc过程可以接受指针,所以通常不需要在这里将指针转换为整数。可以得到相同的结果

inc(PByte(s1), PtrD);

完全避免 s1 转换更好

inc(s1, PtrD);

但它改变了代码的含义 - 它的等价物是

inc(PByte(s1), PtrD * SizeOf(TRGB24 ));

关于delphi - 64 位 XE2 中的 Integer(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694959/

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