作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到任何有关 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/
我找不到任何有关 x64 中 TVarData 的解释。帮助中有一个页面,但 x64 中的 TVarData 和 x86 中的 TVarData 似乎不同。实际上我正在尝试为 x64 目标编译 DEH
我是一名优秀的程序员,十分优秀!