本文介绍了无效的类型转换:在 64 位平台上将记录转换为 tobject的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
它适用于 32 位平台.但不适用于 64 位这是例子
it works on 32-bit platform.but not 64-bithere 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;
谁能帮帮我?非常感谢
推荐答案
你可以试试这样的:
function MakeVerbInfoObject(const AVerbInfo: TVerbInfo): TObject;
begin
Result := nil;
Move(AVerbInfo, Result, SizeOf(AVerbInfo));
end;
strList.addObject('verb1', MakeVerbInfoObject(VerbInfo));
这篇关于无效的类型转换:在 64 位平台上将记录转换为 tobject的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!