Mein Optimizer würde aktuell das draus machen:
Delphi-Quellcode:
begin
Sort(TComparer<TStandardName>.Construct(
function(const Value1, Value2: TStandardName): Integer
begin
if (Value1.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
Result := -1
else if (Value2.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
Result := 1
else if (Value1.Name = Value2.Name) then // Bei gleichen Namen nach Nr sortieren
Result := Value1.Nr - Value2.Nr
else if (Value1.Name > Value2.Name) then
Result := 1
else
Result := -1;
end));
end;
Auch noch nicht ganz passend, aber an ein paar Stellen könnte man noch drehen.
Aber es wäre dann halt ein kompletter Ersatz des Formatierers und derzeit nur für die aktuellste Delphi-Version möglich.