x86和x64 Delphi之间的TVarData差异
我找不到关于x64中TVarData的任何解释。帮助中有一个页面,但似乎x64中的TVarData和x86中的TVarData是不同的。实际上,我正在尝试为x64目标编译DEHL。但在这一行上写着“无效类型转换”:(来源是TVarData) TBIGN数据如下所示:x86和x64 Delphi之间的TVarData差异,delphi,dehl,Delphi,Dehl,我找不到关于x64中TVarData的任何解释。帮助中有一个页面,但似乎x64中的TVarData和x86中的TVarData是不同的。实际上,我正在尝试为x64目标编译DEHL。但在这一行上写着“无效类型转换”:(来源是TVarData) TBIGN数据如下所示: TBigCardinalVarData = packed record VType: TVarType; Reserved1, Reserved2, Reserved3: Word; BigCardinalPtr: PB
TBigCardinalVarData = packed record
VType: TVarType;
Reserved1, Reserved2, Reserved3: Word;
BigCardinalPtr: PBigCardinal;
Reserved4: LongWord;
end;
它用x86编译,但拒绝用x64编译。我认为问题在于Word和LongWord变量。但是我还没有弄清楚。问题是
打包记录
声明,打包记录类型在X64中变成了记录类型,因此您必须在声明中从“打包记录”中删除“打包”,并使用该指令
{$ALIGN 8}
TBigCardinalVarData = record
VType: TVarType;
Reserved1, Reserved2, Reserved3: Word;
BigCardinalPtr: PBigCardinal;
Reserved4: LongWord;
end;
有关更多信息,请阅读这些条目
{$IFDEF CPUX64}{$ALIGN 8}{$ENDIF}TBigIntegerVarData={$IFDEF CPUX86}压缩的{$ENDIF}记录
{$ALIGN 8}
TBigCardinalVarData = record
VType: TVarType;
Reserved1, Reserved2, Reserved3: Word;
BigCardinalPtr: PBigCardinal;
Reserved4: LongWord;
end;