你这个集合必须预先定义好其成员,否则不可以做到。因为没有直接方法枚举集合!
TMySet = set of Byte;
--如何将字符中'1,2,3,4,5,6'转为集合?-
--如何将'1 2 3 4 5 6'转为集合?
这两个一样,只是分隔符不一样:
function StrToSet(S: string): TMySet;
var
I: Integer;
begin
with TStringList.Create do
try
Delimiter := ','; // 或者空格' '
DelimitedText := S;
Result := [];
for I := 0 to Count - 1 do
Include(Result, StrToInt(Trim(Strings)));
finally
Free;
end;
end;
--如何将集合[1,3,4,7]转为'1,3,4,7'字符串?-
--如何将集合[1,3,4,7]格式化转为字符串'01,03,04,07'
也是一个意思!!
function SetToStr(S: TMySet): string;
var
I: Integer;
begin
Result := '';
for I := Low(Byte) to High(Byte) do
begin
if I in S then
begin
if Result = '' then
Result := FormatFloat('00', I)
else
Result := Result + ',' + FormatFloat('00', I);
end;
end;
end;