CustomSort kann man eine Sortierfunktion übergeben, jeweils eine Andere, da braucht man keinen weiteren parameter.
Delphi-Quellcode:
if SortByProvider then
TStringList(nil).CustomSort(function(List: TStringList; Index1, Index2: Integer): Integer
begin
Result := AnsiCompareText(GetDomainPart(Item1), GetDomainPart(Item2))
if Result = 0 then
Result := AnsiCompareText(GetNamePart(Item1), GetNamePart(Item2));
end)
else
//StringList.CustomSort(function(List: TStringList; Index1, Index2: Integer): Integer
// begin
// Result := AnsiCompareText(Item1, Item2);
// end);
StringList.Sort; // hat sich ja nix geändert
Bei wem es noch keine anonymen Methoden gibt, der nutzt halt eine "normale" Funktion dafür.
AnsiLowerCase und die If-Vergleiche sind in
AnsiCompareText schon eingebaut.
Und nicht über das
Ansi wundern ... unter
Unicode ist das urplötzlich eine Unicodefunktion, weil irgendwe dachte es wäre cool so.
Oder
AnsiComparestr ohne integriertem AnsiLowerCase.
und bei falscher Sortierreihenfolge einfach die Parameter tauschen.
PS: Sowas wie Folgendes würde ich hiebei nie nutzen, denn ein NOT kann man beim Lesen shcnell mal übersehn
und die beiden Then-Else-Zweige kann man ja uch problemlos tauschen.
Delphi-Quellcode:
if not ... then
begin
end
else