tao*_*oxl 5 delphi 64-bit casting record tobject
它适用于32位平台.但这里不是64位的例子
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;
Run Code Online (Sandbox Code Playgroud)
谁能帮我?非常感谢你
你可以尝试这样的事情:
function MakeVerbInfoObject(const AVerbInfo: TVerbInfo): TObject;
begin
Result := nil;
Move(AVerbInfo, Result, SizeOf(AVerbInfo));
end;
strList.addObject('verb1', MakeVerbInfoObject(VerbInfo));
Run Code Online (Sandbox Code Playgroud)
要检索值,您可以使用相应的函数,例如
function GetVerbInfoFromObject(AObject: TObject): TVerbInfo;
begin
Move(AObject, Result, SizeOf(Result));
end;
VerbInfo := GetVerbInfoFromObject(strList.Objects[idx]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |