0

TStringList.Sortを使用して文字列のコレクションをフリーパスカルで並べ替えるには、最初の順序を覚えておく必要があります。ソートされたインデックスを返す可能性はありますか?そうでない場合、これを効率的に行うにはどうすればよいですか?

4

2 に答える 2

3

objectプロパティを使用して、アイテムの元のインデックスを保存できます。

したがって、この方法でアイテムを挿入できます

SL.AddObject('Item 1', TObject(SL.Count));
SL.AddObject('Item 2', TObject(SL.Count));

TStringListを並べ替えた後、元のインデックスを取得します

   Index := Integer(SL.Objects[i]);
于 2012-02-02T16:38:37.753 に答える
0

少し遅れますが、文字列は書き込み時にコピーされるため、次を使用してtstringlistを2番目のtstringlistに割り当てることができます。

   t2.assign(t1);

これは文字列を複製しません。コピーオンライトの動作により、tstringlistは文字列のインデックスのようなものです。

于 2012-02-07T11:24:38.057 に答える