2012-09-07 59 views
1

我想下面的值添加到TDictionary重複條目(德爾福)

procedure TForm1.FormCreate(Sender: TObject); 
var 
    md: TDictionary<string, string>; 
    s, v: string; 
begin 
    md := TDictionary<string, string>.Create; 
    try 
    s := 'orange'; 
    v := 'fruit'; 
    md.Add(s, v); 

    s := 'orange '; 
    v := 'color'; 
    md.Add(s, v); 

    ShowMessage(IntToStr(md.Count)); 
    finally 
    md.Free; 
    end; 
end; 

我知道這是重複的,但如果你看一下第二個橘子,你可以看到在後面加上一個空格。我認爲德爾福修剪的價值,但它不應該。

有沒有人知道解決這個問題?

謝謝,

+5

我只是測試你的代碼,字典不修剪鍵,你使用的是哪個版本的Delphi? – RRUZ

+0

請不要發佈虛假代碼。請發佈真實的代碼。代碼編譯。使用剪貼板來實現這一點。 –

+0

@RRUZ你是對的。這一個工作正常,但我不知道爲什麼真正的沒有工作。我沒有粘貼真正的一個,因爲它從一個文件讀取,它是一個記錄文件的大代碼。順便說一句,我用XE2 – blacksun

回答

4

此代碼顯示了含有Delphi的所有已知的版本數2的消息框。這與預期完全相同,並且TDictionary代碼在比較相等性時絕對不會削減您的密鑰。

+0

+1。測試。我得到預期的'2',如果我刪除空間(修剪它會做),我得到一個關於不允許重複的例外(如預期)。 –

+0

是的工作很好!我認爲我犯了一個錯誤。我將使用它來本地化我的軟件。確實工作得非常快..! – blacksun

+0

這就是爲什麼我選擇這種方法(在最後增加空間)。我正在將小時和小時翻譯成土耳其語。但是他們被翻譯成薩特。爲了逆轉語言,我不得不增加空間「Saat」。這是我已經解決了這個問題... – blacksun