2015-05-18 3 views
2

Я пытаюсь создать список строк, которые не чувствительны к регистру.Как создать регистр строки, не учитывающий регистр?

Метод CreateList давайте мне пройти в некоторых перегрузках:

  • TComparison<System.string>
  • IComparer<System.string>

Я пытался использовать TStringComparer.OrdinalIgnoreCase так:

var 
    List: IList<string>; 
begin 
    List := TCollections.CreateList<string>(TStringComparer.OrdinalIgnoreCase); 
end; 

Но так как это компаратором делает не реализовать ни один из вышеперечисленных классов/интерфейсов, который не компилируется; Я получаю:

E2250 Там нет перегруженной версии TCollections.CreateList<System.string>, которые могут быть вызваны с этими аргументами

является реализация одного из тех, доступных в рамках spring4d?

+2

Сам Tstringlist можно установить на плотность корпуса. – Tim3880

+0

Почему бы просто не просто использовать aTStringList? –

+2

Если вы процитировали ошибку компилятора, то это помогло бы –

ответ

4

Вы должны написать круглые скобки:

var 
    List: IList<string>; 
begin 
    List := TCollections.CreateList<string>(TStringComparer.OrdinalIgnoreCase()); 
end; 

Позже версии компилятора могут понять это без.

1

После более близкого осмотра типа TComparison:

type 
    TComparison<T> = reference to function(const Left, Right: T): Integer; 

Ответ оказывается довольно tivial:

var 
    List: IList<string>; 
begin 
    List := TCollections.CreateList<string>(AnsiCompareText); 
end; 
+0

Это обходной путь, правильный ответ - это Стефан, см. Также: http://stackoverflow.com/questions/30157034/why-does-tfunct-deference-properly-but-array-0-1-of-tfunct-not и http://stackoverflow.com/questions/26144675/generics-not-resolving-method-types-correctly?lq=1 – Johan

+0

@Johan Почему это обходное решение? Что случилось с передачей простой функции сравнения? –

+0

Потому что проблема заключается в отсутствии(). Ваше решение работает вокруг этого, передавая аргумент, который не требует(). Без этого понимания вы не будете знать, почему он терпит неудачу. – Johan

 Смежные вопросы

  • Нет связанных вопросов^_^