g'morning!delphi字典迭代
我填充字典TDictionary<String, TStringlist>
(delphi-collections-unit),字符串作为值和几个字符串作为值。 类似:
- 名称=约翰,丽莎,斯坦
- 技能=读,写,说
- 年龄= 12,14,16
(没有 “” 当然, )。 我需要的是迭代这个字典,并用这些键乘以数值。 输出应该像
- 名称=约翰技能=读年龄= 12个
- 名称=约翰技能=读年龄= 14个
- 名称=约翰技能=读年龄= 16个
- 名称=约翰技能=写年龄= 12个
- 名称=约翰技能=写年龄= 14个
- 名称=约翰技能=写年龄= 16
- ...
- 名=丽莎技能=读年龄= 12
- ...
- 名=斯坦技能=说话的年龄= 16
所以每一个组合。 我该怎么做?键的数量是动态的,tstringlist的大小也是动态的。 谢谢!现在解决...
现在的问题与范围。以下是填写字典的程序。 subsplits和splitstring是字符串列表,在程序结束时被释放。该字典是在程序块(在main?它是如何调用的?)之后创建的,填充方法被调用,然后我想像代码示例中那样执行递归,但dict中没有值... 。
while not Eof(testfile) do
begin
ReadLn(testfile, text);
if AnsiContainsStr(text, '=') then
begin
Split('=', text, splitarray);
splitarray[0] := trim(splitarray[0]);
splitarray[1] := DeleteSpaces(splitarray[1]);
if AnsiStartsStr('data', splitarray[0]) then
begin
split(' ', splitarray[0], subsplit1);
splitarray[0]:=subsplit1[1];
split(',', splitarray[1], subsplit2);
dict.Add(splitarray[0], subsplit2);
for ValueName in dict.Values do
begin
for i := 0 to Valuename.Count - 1 do
write('Values are : '+ Valuename[i]);
writeln;
end;//
end;//
end;//
end;//
@stanislav,我编辑你的问题,使其可读性。下次,请自己动手。当你写下你的问题时,你的右边有一个帮助屏幕,解释了降价和底部的实时预览,这样你就可以知道你的问题一旦发布就会如何。 – 2011-04-07 07:47:29
你是对的。我也想编辑它,但你更快。谢谢! – soulbrother 2011-04-07 07:49:09
@stanislav,你的例子与你的问题不符。你不是在做“每一种组合”,你最后的例子是“lisa”,“read”和年龄“12”。如果这个例子是'names = stan,skills = speak,age = 16',那么解决方案很简单;现在,我不知道你想要什么! – 2011-04-07 07:50:07