В Delphi 6, если вы пытаетесь вставить объект в TStringList, который отсортирован (Sorted = true), создается исключение, предупреждающее вас, что InsertObject () не разрешен в отсортированном списке. Я мог бы понять это, если бы вызов InsertObject () обязательно означал разрушение отсортированного порядка в списке. Но учитывая, что метод TStringList.Find ():
function TStringList.Find(const S: string; var Index: Integer): Boolean;
возвращает индекс, точно указывающий, каким должен быть индекс вставки для данной строки, если он был добавлен в список, и вызов функции InsertObject () с этим индексом должен оставить отсортированный список в порядке сортировки после операции. Я изучил источник Delphi для TStringList, и, похоже, это подтверждает мое утверждение.
На данный момент я просто создаю новый подкласс для TStringList, который переопределяет InsertObject () и не выдает исключение, если InsertObject () вызывается в отсортированном списке, но я хочу убедиться, что некоторые скрытые опасность, которую я просто не вижу.
- Рошлер