目前在遗留代码中,我有一个想要转换为字符串数组的集合,因此我可以将其作为现有方法的参数进行传递。
//Existing code to be used and converted
const
North = 'F';
Pay = 'P';
Lynk = 'L';
TCharSet = set of AnsiChar;
MySet: TCharSet = [North, Pay, Lynk];
**所以我的问题是如何将上面的集合转换为字符数组?**这可行吗?
在做了一些研究之后,发现下面的代码似乎使用了枚举来创建一个集合,并使用TypeInfo将枚举转换为字符串。
//**Working code**
TMyEnum = (meFirst, meSecond, meThird);
TMySet = set of TMyEnum;
function MySetToString(MySet: TMySet): string;
var
i: TMyEnum;
begin
Result := '';
// one way to iterate
for i := Low(i) to High(i) do
if i in MySet then
Result := Result + GetEnumName(TypeInfo(TMyEnum), Ord(i)) + ' ';
end;
// call to above method
set1 := [meFirst, meSecond, meThird];
ShowMessage(MySetToString(set1));
我真的很感激你们的帮助。
2条答案
按热度按时间n3h0vuf21#
更新(更改问题后):
您的MySet将返回以下内容:
也就是说。包含3个元素的字符数组,按该顺序排列的是‘F’、‘L’和‘P’(它们将始终按ANSI的顺序排列,因为集合没有“顺序”的概念)。
rmbxnbpk2#
您可以使用CHAR函数将集合中的每个元素转换为CHAR。因此,代码可能是这样的: