无效的类型转换:转换记录TObject的64位平台类型、平台、TObject

2023-09-08 01:07:57 作者:装腔作势

它适用于32位platform.but不是64位 这里是exzample

it works on 32-bit platform.but not 64-bit here is the exzample

  TVerbInfo = packed record
    Verb: Smallint;
    Flags: Word;
  end;

var
  VerbInfo: TVerbInfo;
  strList : TStringList;
  verb : Smallint;
  flags : Word;
begin
  strList := TStringList.create();
  .....
  verbInfo.verb := verb;
  verbInfo.flags := flags;
  strList.addObject('verb1',TObject(VerbInfo));  //invalid typecast happened here
end;

谁能帮助我?非常感谢你。

can anyone help me? thank you very much

推荐答案

您可以尝试这样的:

function MakeVerbInfoObject(const AVerbInfo: TVerbInfo): TObject;
begin
  Result := nil;
  Move(AVerbInfo, Result, SizeOf(AVerbInfo));
end;

strList.addObject('verb1', MakeVerbInfoObject(VerbInfo));
 
精彩推荐
图片推荐