Может ли TStringList.Sort возвращать отсортированные индексы? - PullRequest
0 голосов
/ 02 февраля 2012

Используя TStringList.Sort для сортировки набора строк в свободном паскале, мне нужно запомнить начальный порядок.Есть ли возможность вернуть отсортированные индексы?Если нет, то как это можно сделать эффективно?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Вы можете использовать свойство объекта для хранения исходного индекса элемента.

Таким образом, вы можете вставить свои вещи таким образом

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

и получить исходный индекс после сортировки TStringList

   Index := Integer(SL.Objects[i]);
0 голосов
/ 07 февраля 2012

Немного поздно, но поскольку строки копируются при записи, вы можете просто назначить список tstringlist второму списку tstringlist, используя

   t2.assign(t1);

Это не будет дублировать строки. Из-за поведения копирования при записи tstringlist похож на индекс для строк.

...