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