具有以下枚举:
TDays = (tdSunday, tdMonday, tdTuesday, tdWednesday, tdThursday, tdFriday, tdSaturday);
以及该枚举的以下集合:
TChoosenDays = set of TDays;
现在,定义以下数组:
var
ArrayStringDaysAcronym : array [TDays] of String = ('SD', 'MD', 'TU', 'WE', 'TH', 'FR', 'ST');
假设我有一个变量声明为:
var
Foo: TChoosenDays;
begin
Foo:= [tdSunday, tdMonday, tdTuesday];
如何迭代集合中存在的所有成员?
注意:以下内容无法编译,我知道我可以使用数组而不是“set of”,这是唯一的方法吗?
function ConcatAcronyms: String;
var
Item: TDays;
begin
Result:= '';
for Item:= Low(Foo) to High(Foo) do
begin
Result:= Result + '; '+ ArrayStringDaysAcronym[Item];
end;
end;
最佳答案
是的。由于您使用的是 D6,因此您可以这样做:
function ConcatAcronyms: String;
var
Item: TDays;
begin
Result:= '';
for Item:= Low(TDays) to High(TDays) do
begin
if Item in Foo then begin
if Result <> '' then
Result := Result + ';' // assuming you don't want Result to start with a ';'
Result:= Result + ArrayStringDaysAcronym[Item];
end;
end;
end;
关于delphi - 集合类型是否适合循环迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33022385/