問題タブ [tdictionary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1646 参照

delphi - Delphi TDictionary : 同じキーを持つ場合、値は自動的に置き換えられます

Delphi XE5 を使用しています。これは私のコードの再開です。次のコードは機能しますが、私のコードには通常の動作を破壊する何かが必要です:

そして今、別のユニット:

これは私のコードの履歴書です。大きすぎるため、すべてのコードを配置できますが、この問題を解決するために検索できる場所を知りたいです。私は簡単ではありません、おそらく私だけがその問題を抱えているわけではありません.使用中のクラス、クラス変数、その辞書にメモリの問題を引き起こす何かがありますが、それを見つける方法はありません.

0 投票する
3 に答える
5382 参照

delphi - delphi TDictionary でレコードをキーとして使用する

TDictionary でキー値としてレコードを使用できますか? 文字列、整数、整数の組み合わせに基づいてオブジェクトを検索したい。

...

...

これにより、オブジェクト 2 が返されます。

0 投票する
1 に答える
10609 参照

delphi - TDictionary を Integer のキーで昇順に並べ替える

Delphi 2009 で TDictionary を Integer のキーで昇順に並べ替えるにはどうすればよいですか?

0 投票する
1 に答える
5438 参照

delphi - Delphi 辞書の解放

次のクラスを実装しました。

次に、グローバル変数があります。

OnFormActivate手順で、変数proceduresを初期化します。

そして、私はそれOnFormCloseを解放します:

私のコードはメモリをリークしますか? もしそうなら、を解放する正しい方法は何dictionaryですか? 私が知っていることから、反復は良い考えではありません。

0 投票する
1 に答える
1067 参照

delphi - GetHashCode の良い習慣ですか?

Delphi プロジェクト (RAD Studio XE7 でビルド) 用に、ブラシの辞書を作成したいと考えています。各ディクショナリ項目には、取得するブラシを記述する TMyBrush オブジェクトがキーとして含まれ、GDI+ ブラシが値として含まれます。

TMyBrush クラスには 3 つのフィールドが含まれています

  • ブラシの種類 (ソリッド、グラデーションなど) を決定する列挙型
  • ブラシの内容 (色、ラップ モードなど) を記述する TBrushInfo クラス
  • クランプ フィールドを表す TRect

私の辞書では、彼のインスタンスではなく、彼の特性に基づいてブラシを取得したいと考えています。たとえば、ローカルの TMyBrush インスタンスを作成し、それを黒のソリッドに構成し、TryGetValue() 関数を使用して一致する GDI+ 値を取得することで、辞書から黒のソリッド ブラシを取得したいと考えています。そのために、TMyBrushComparer を作成しました。

Equals() 関数を書くことは、私にとっては問題ではありません。ただし、GetHashCode() 関数を記述するためのベスト プラクティスが何であるかはわかりません。私は次のような関数を書く傾向があります:

しかし、それはあまり良い習慣ではないと思いますが、正しいですか? では、TMyBrushComparer に適した GetHashCode() 関数を作成するためのベスト プラクティスは何ですか?

よろしく

0 投票する
1 に答える
741 参照

multithreading - TDictionary などの Delphi 読み取り専用ジェネリックおよび TListスレッドセーフですか?

ユニットの初期化時にのみジェネリック リストまたはディクショナリに項目を追加し、それを複数のスレッドに対して読み取り専用として使用できますか?

TList<T>スレッドセーフなトピックとそうでない別のトピックを読みましたTDictionary<T>。2つの違いは何ですか?