gpt4 book ai didi

delphi - x86 和 x64 Delphi 之间的 TVarData 差异

转载 作者:行者123 更新时间:2023-12-03 14:57:39 25 4
gpt4 key购买 nike

我找不到任何有关 x64 中 TVarData 的解释。帮助中有一个页面,但 x64 中的 TVarData 和 x86 中的 TVarData 似乎不同。实际上我正在尝试为 x64 目标编译 DEHL。但这一行显示“无效类型转换”:(来源为 TVarData)

Big := TBigCardinalVarData(Source).BigCardinalPtr^;

TBigCardinalVarData 在这里:

TBigCardinalVarData = packed record
VType: TVarType;
Reserved1, Reserved2, Reserved3: Word;
BigCardinalPtr: PBigCardinal;
Reserved4: LongWord;
end;

它可以在 x86 中编译,但拒绝在 x64 中编译。我认为问题出在 Word 和 LongWord 变量中。但我还想不通。

最佳答案

问题出在打包记录声明上,打包记录类型在X64中变成了记录类型,因此必须将声明中的“打包记录”中的“打包”去掉,改用ALIGN指令.

{$ALIGN 8}
TBigCardinalVarData = record
VType: TVarType;
Reserved1, Reserved2, Reserved3: Word;
BigCardinalPtr: PBigCardinal;
Reserved4: LongWord;
end;

有关更多信息,请阅读这些条目

关于delphi - x86 和 x64 Delphi 之间的 TVarData 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779386/

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