x86和x64 Delphi之间的TVarData差异

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

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

TBIGN数据如下所示:

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;