для чего в CustomSort использовать IndexOf? (если не изменяет память IndexOf рекомендуется использовать на УЖЕ отсортированном списке)
в функцию типа
TStringListSortCompare передается два индекса и список, задача функции сравнить всего два элемента (их индексы и где они содержатся имеются в функции) и выдать результат их сравнения