我正在尝试将一个集合存储在TStringList的对象属性(并读取它)中(我也将使用它来存储与该集合相关联的文本),但是我得到了一个无效的集合类型.
在StringList对象中存储集合的最佳方法是什么?此外,在销毁StringList时是否需要释放此对象?
这是一些示例代码:
type
TDummy = (dOne, dTwo, dThree);
TDummySet = set of TDummy;
var
DummySet: TDummySet;
SL: TStringList;
begin
SL := TStringList.Create;
Try
DummySet := [dOne, dThree];
SL.AddObject('some string', TObject(DummySet)); // Doesn't work. Invalid typecast
Finally
SL.Free;
End;
end;
Run Code Online (Sandbox Code Playgroud)
首先阅读其他答案 - 可能你会找到一个不太讨厌的解决方案.
但是FTR:你可以写
SL.AddObject('some string', TObject(Byte(DummySet)));
Run Code Online (Sandbox Code Playgroud)
和
DummySet := TDummySet(Byte(SL.Objects[0]));
Run Code Online (Sandbox Code Playgroud)
如果你真的想要
注意:Byte如果向TDummySet类型添加足够的元素,则必须更改关键字.例如,如果你再添加六个元素(这样总共有九个)你需要转换为Word.
| 归档时间: |
|
| 查看次数: |
1979 次 |
| 最近记录: |