0

embarcadero サンプルを使用して TDictionary をテストしています ( http://docwiki.embarcadero.com/CodeExamples/XE5/en/Generics_Collections_TDictionary_%28Delphi%29 )

キーと値の作成と追加に問題はありません。ただし、キー値「London」を使用してテーブルにアクセスしようとすると:

(1) Dictionary.Items['London'].Country -> 正しい値 "Dictionary.Items['London'].Country' を与える

(2) Edit1.Text に 'London' と入力し、Dictionary.Items[Edit1.Text].Country -> 「アイテムが見つかりません」というエラーが表示されますか?

誰かがこれを説明できますか?

前もって感謝します。

////////////////////////////////////////// ///サンプルコード

var Dictionary: TDictionary<String, TCity>;
    City, Value: TCity;
    Key: String;


begin
  Dictionary := TDictionary<String, TCity>.Create;
  City := TCity.Create;
  { Add some key-value pairs to the dictionary. }
  City.Country := 'Romania';
  City.Latitude := 47.16;
  City.Longitude := 27.58;
  Dictionary.Add('Iasi', City);

  City := TCity.Create;
  City.Country := 'United Kingdom';
  City.Latitude := 51.5;
  City.Longitude := -0.17;
  Dictionary.Add('London', City);

  City := TCity.Create;
  City.Country := 'Argentina';
  { Notice the wrong coordinates }
  City.Latitude := 0;
  City.Longitude := 0;
  Dictionary.Add('Buenos Aires', City);

  showmessage(Dictionary.Items['London'].Country); // This One is OK

  // now using Edit1.Text where I put 'London'
  Showmessage(Dictionary.Items[Edit1.Text].Country); // This return to error message (Item not found)


  Dictionary.Clear;
  Dictionary.Free;
  City.Free;

end;
4

1 に答える 1

1

説明は、あなたの主張に反して、 にEdit1.Text等しくないということ'London'です。大文字と小文字が一致していない可能性があります。または、先頭または末尾に空白があります。

私が正しいことを確認するためにアサーションを追加します。

Assert(Edit1.Text='London');
于 2014-02-24T19:38:16.847 に答える