問題タブ [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.
delphi - Delphi TDictionary : 同じキーを持つ場合、値は自動的に置き換えられます
Delphi XE5 を使用しています。これは私のコードの再開です。次のコードは機能しますが、私のコードには通常の動作を破壊する何かが必要です:
そして今、別のユニット:
これは私のコードの履歴書です。大きすぎるため、すべてのコードを配置できますが、この問題を解決するために検索できる場所を知りたいです。私は簡単ではありません、おそらく私だけがその問題を抱えているわけではありません.使用中のクラス、クラス変数、その辞書にメモリの問題を引き起こす何かがありますが、それを見つける方法はありません.
delphi - delphi TDictionary でレコードをキーとして使用する
TDictionary でキー値としてレコードを使用できますか? 文字列、整数、整数の組み合わせに基づいてオブジェクトを検索したい。
...
...
これにより、オブジェクト 2 が返されます。
delphi - TDictionary を Integer のキーで昇順に並べ替える
Delphi 2009 で TDictionary を Integer のキーで昇順に並べ替えるにはどうすればよいですか?
delphi - Delphi 辞書の解放
次のクラスを実装しました。
次に、グローバル変数があります。
OnFormActivate
手順で、変数procedures
を初期化します。
そして、私はそれOnFormClose
を解放します:
私のコードはメモリをリークしますか? もしそうなら、を解放する正しい方法は何dictionary
ですか? 私が知っていることから、反復は良い考えではありません。
delphi - GetHashCode の良い習慣ですか?
Delphi プロジェクト (RAD Studio XE7 でビルド) 用に、ブラシの辞書を作成したいと考えています。各ディクショナリ項目には、取得するブラシを記述する TMyBrush オブジェクトがキーとして含まれ、GDI+ ブラシが値として含まれます。
TMyBrush クラスには 3 つのフィールドが含まれています
- ブラシの種類 (ソリッド、グラデーションなど) を決定する列挙型
- ブラシの内容 (色、ラップ モードなど) を記述する TBrushInfo クラス
- クランプ フィールドを表す TRect
私の辞書では、彼のインスタンスではなく、彼の特性に基づいてブラシを取得したいと考えています。たとえば、ローカルの TMyBrush インスタンスを作成し、それを黒のソリッドに構成し、TryGetValue() 関数を使用して一致する GDI+ 値を取得することで、辞書から黒のソリッド ブラシを取得したいと考えています。そのために、TMyBrushComparer を作成しました。
Equals() 関数を書くことは、私にとっては問題ではありません。ただし、GetHashCode() 関数を記述するためのベスト プラクティスが何であるかはわかりません。私は次のような関数を書く傾向があります:
しかし、それはあまり良い習慣ではないと思いますが、正しいですか? では、TMyBrushComparer に適した GetHashCode() 関数を作成するためのベスト プラクティスは何ですか?
よろしく
multithreading - TDictionary などの Delphi 読み取り専用ジェネリックおよび TListスレッドセーフですか?
ユニットの初期化時にのみジェネリック リストまたはディクショナリに項目を追加し、それを複数のスレッドに対して読み取り専用として使用できますか?
TList<T>
スレッドセーフなトピックとそうでない別のトピックを読みましたTDictionary<T>
。2つの違いは何ですか?