【问题标题】:TDictionary duplicate entry (Delphi)TDictionary 重复条目(Delphi)
【发布时间】:2012-09-07 03:02:17
【问题描述】:

我正在尝试将以下值添加到

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;

我知道这是重复的,但如果您查看第二个橙色,您会在末尾看到一个空格。我认为 Delphi 削减了价值,但它不应该这样做。

有人知道这个问题的解决方法吗?

谢谢,

【问题讨论】:

  • 我只是测试你的代码,字典没有修剪键,你使用的是哪个版本的Delphi?
  • 请不要发布假代码。请发布真实代码。编译的代码。使用剪贴板来实现这一点。
  • @RRUZ 你是对的。这个工作得很好,但我不知道为什么真正的没有工作。我没有粘贴真实的,因为它是从文件中读取的,并且是记录文件的大代码。顺便说一句,我使用 XE2
  • @DavidHeffernan 谢谢你的警告。我已经更新了代码。
  • 更新后的代码仍然是有效的代码还是无效的“真实”代码?

标签: delphi duplicates tdictionary


【解决方案1】:

此代码显示了一个消息框,其中包含所有已知版本的 Delphi 上的数字 2。这完全符合预期,TDictionary 代码在比较相等性时肯定不会修剪您的键。

【讨论】:

  • +1。经测试。我得到了预期的2,如果我删除空间(修剪它会这样做),我会得到一个关于不允许重复的异常(如预期的那样)。
  • 是的,效果很好!我想我做错了。我将使用它来本地化我的软件。确实运行得非常快..!
  • 这就是我选择这种方法的原因(在末尾添加空格)。我正在将 Hour and Hours 翻译成土耳其语。但是他们俩都翻译成Saat。要反转语言,我必须添加空格“Saat”。这就是我解决问题的方法...
  • @DavidHeffernan 谢谢。我不知道 :) 我现在正在做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
相关资源
最近更新 更多