【发布时间】:2011-04-07 07:42:04
【问题描述】:
早安!
我用字符串作为值和几个字符串作为值填充字典TDictionary<String, TStringlist>(delphi-collections-unit)。
类似:
- 名字 = 约翰、丽莎、斯坦
- 技能 = 读、写、说
- 年龄 = 12、14、16
(当然没有“,”)。 我需要的是迭代这个字典并用键乘以值。 输出应该像
- 名字 = 约翰技能 = 阅读年龄 = 12
- 名字 = 约翰技能 = 阅读年龄 = 14
- 名字 = 约翰技能 = 阅读年龄 = 16
- 名字 = 约翰技能 = 写年龄 = 12
- 名字 = 约翰技能 = 写年龄 = 14
- 名字 = 约翰技能 = 写年龄 = 16
- ...
- 名字 = lisa 技能 = 阅读年龄 = 12
- ...
- 名字 = 斯坦技能 = 说话年龄 = 16
所以每个组合。 我该怎么做?键的数量是动态的,tstringlist 的大小也是动态的。 谢谢!现在解决了...
现在是范围的问题。以下是填充字典的过程。 subsplits 和 splitstring 是字符串列表,它们在过程结束时被释放。 dict是在程序块之后创建的(在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,我编辑了您的问题以使其易于阅读。下次请自己做。当你写你的问题时,你的右侧有一个帮助屏幕,它解释了降价和底部的实时预览,这样你就知道你的问题在发布后会是什么样子。
-
你是对的。我也想编辑它,但你更快。谢谢!
-
@stanislav,您的示例与您的问题不符。你没有做“所有组合”,你的最后一个示例行是“lisa”、“read”和“12”。如果该示例是
names=stan, skills=speak, ages=16,则解决方案将很简单;就目前而言,我不确定你想要什么! -
啊,好的!我写了“等等”来说明清楚,对不起!是的,最后一行应该是 names=stan,skills=speak,ages=16,yes。
-
这是作业吗?如果是这样,请使用
homework标签。
标签: delphi loops tdictionary