問題タブ [tobjectlist]

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 投票する
3 に答える
1134 参照

delphi - 複数の比較ツールを使用して、TObjectList <>でExcelのようにAで並べ替え、次にBで並べ替える方法

ジェネリックスを使い始めたばかりですが、現在、複数のフィールドで並べ替えを行う際に問題が発生しています。

ケース:
PeopleListをとして持っていて、TObjectList<TPerson>一度に1つの並べ替えフィールドを選択することで、Excelのような並べ替え関数を作成できるようにしたいのですが、以前の並べ替えは可能な限り維持します。

編集:実行時にフィールドの並べ替え順序を変更できる必要があります。(つまり、あるシナリオでは、ユーザーはソート順A、B、Cを必要とします-別のシナリオでは、B、A、Cを必要とします-さらに別のA、C、Dを必要とします)

ソートされていない人のリストがあるとしましょう:

ここで、LastNameで並べ替えると:

次に、年齢で並べ替えると、これが必要になります。

これを行うために、2つの比較子を作成しました。1つはTLastNameComparerで、もう1つはTAgeComparerです。

私は今電話します

今私の問題は、これが私が望む出力を生成しないということですが、

代わりに、Smith、26がJones、26の前に表示されます。したがって、以前の並べ替えが保持されていないようです。

LastNameとAgeの両方を比較する比較子を1つだけ作成できることは知っていますが、問題は、TPersonに存在するフィールドの組み合わせごとに比較子を作成する必要があることです。

複数のTComparerを使用してやりたいことを実行することは可能ですか、またはどうすればやりたいことを達成できますか?

新年の更新

将来の訪問者のために、これは(ほぼ)私が現在使用しているコードです。

まず、基本クラスTSortCriterion<T>とを作成TSortCriteriaComparer<T>して、将来的に複数のクラスで使用できるようにしました。オブジェクトリストが基準の破棄を自動的に処理する方が簡単であることがわかったので、基準とリストをそれぞれとに変更しTObjectました。TObjectList

最後に、ソート基準を使用するために:(これは例のためだけです。ソート順を作成するロジックは実際にはアプリケーションに依存するためです):

0 投票する
2 に答える
1003 参照

delphi - TObjectList を渡すことができないのはなぜですかTObjectList を期待する関数へ?

ジェネリック型を使用するコードに問題があります。Result渡されたリスト ( ) がTObjectList<TItem>( in のTItem型である) であることをコンパイラが認識しないのはなぜですか?TTItems

インターフェース:

実装:

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

delphi - オブジェクトリストがデータを取得していません

いくつかの画像をオブジェクトリストにロードしてから、それらを呼び戻そうとします。しかし、それは画像を表示していませんか?

あなたが気づいたら、私はそこにこの部分があり、画像をzimage1にロードすることが問題であったかどうかを確認しました。

私がそれをしたとき、それはbmpoutをzimage1にロードしました、それは私にそのiamが間違っているオブジェクトリストで何かを考えるように導きますか?

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

delphi - Delphi Rtti:TObjectListからオブジェクトを取得する方法

カスタムクラスからxmlへのコンバーターを使用していますが、要件の1つはTObjectList<T>フィールドをストリーミングする機能です。TObjectlistのオブジェクトを取得するため
にメソッドを呼び出そうとしていますが、タイプが明らかに一致しないため、「Invalidclasstypecast」が表示されます。ToArray()

このクラスを例にとってみましょう。

SitesTObjectListからSiteObjectsを取得する必要があります。私はRTTIを使用しているので、TObjectListのObjectTypeがわからないため、型キャストは機能しないことに注意してください。これは私が持っているものですが、行き止まりのようです(ObjはTobjectList<TSite>ここにあります):

RTTIを介してTObjectListからオブジェクトを取得する方法は、私にとっては良いことです。奇妙な理由で、TypInfoにGetItem/SetItemメソッドが表示されません

編集

デビッドのおかげで私は私の解決策を持っています:

私は提案を受け入れています、多分この目標を達成するためのより多くの「賢い」方法があります...

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

delphi - 大きなTObjectListを使用し、未使用の部分の割り当てを解除します

TObjectList(Delphi 2007)を使用して、大量のデータを格納しています。約30万個以上の要素があると予想されます。ただし、リストが作成されるとき、デフォルトのサイズは4つの要素のみを格納するように設定され、5番目の要素を追加しようとすると8つ、9番目の要素を追加しようとすると16になります。数字がずれているかもしれませんが、動作は正しいと思います。これに伴う問題は、すべての要素をメモリの割り当て解除された部分から、新しい拡張リストが移行される新しいメモリブロックにコピーする必要があることです。特定の初期サイズを設定し、リストが割り当て/予約した未使用のスペースの割り当てを解除します(または、予約と割り当ては同じではないため、メモリの予約を元に戻します)。これはおそらく多くのコードではありませんが、永続的なものがあるはずだと思います。

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

list - カスタム オブジェクト リストは、実行時にオブジェクトを追加できず、「Nullpointer Exception」が発生します

カスタム タイプ objectlist の 1 つのリストを作成し、そのリストにいくつかのオブジェクトを追加するときに、いくつかの問題に直面しています。advertiseオブジェクト リストが 1つある

次の行以降、最初のオブジェクトを挿入した後、コードにランタイム エラーが発生します。

誰かが私を導くことができれば...

スタックトレース:-

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

delphi - TObjectList の Binarysearch 関数を呼び出すことができません

XE2 または XE3 のTObjectList メソッドのオンライン ヘルプ を調べると、TObjectList でバイナリ検索機能にアクセスできることがわかります。しかし、XE3 を試してみると、コンパイルすらできません。

例として、ソート機能も利用できますが、これはコンパイルします。

どんなアイデアでも大歓迎です。

サンプルコード:


David Heffernan が提案したように、ソート関数の比較子のコードに従います。

興味のある方は、比較メソッドのコードに従ってください。

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

delphi - TObjectList の並べ替え同じコンパレータ値クラスタ内の問題

TObjectList<T>以下に示す比較関数コードを独自の比較関数を使用して並べ替えたいと思います。

これを達成するために、ObjectList から昇順と降順の 2 方向に並べ替えることができるようにしたいのですが、これを行うには、S1 と S2 の 2 つのパラメーターを持つ SysUtil.CompareText を使用します。別の解決策が存在するかどうかはわかりません。s1がS2より大きい場合、またはその逆の場合はすべて問題ありませんが、通常の場合、s1 = s2の場合、列のすべての要素は同一ですが、反対が発生したため、リストに再インデックスはありません TObjectList sortedあたかも s1 > s2 または s1 < s2..

私の質問は、等値と差をサポートする比較子をどのように実装するかです。

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

delphi - DelphiのexeとDLLの間のTobjectList

exe と Delphi で記述された dLL の間で、TobjectList を含むポインタを交換できないことを誰かが確認できますか?

実行可能コード:

TobjectList 以外の @TStack の内容は良好です