Hallo Daniel.
Vielen Dank für Deine Willkommensworte und die schnelle Antwort. Ich hatte Deinen Schnipsel meinen Belangen nach angepasst, aber das Ergebnis war nicht wie erwartet - was aber mit Sicherheit an meiner eigenen Unzulänglichkeit liegt

Nur die Spalte 1 wurde richtig sortiert.
Spalte 1 besteht aus einem Byte, welches die Werte 0 und 1 annehmen kann. Spalte 2 ist ein Word von 0 bis $ffff.
Die Lösung sieht nun für mich wie folgt aus (tut mir leid, Explorer meldet Fehler, wenn ich das Code-Tag anklicke; wie schreibe ich es händisch?):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function SortyByStartIP(Item1, Item2: Pointer): Integer; begin if PRangeData(Item1)^.Rule1 > PRangeData(Item2)^.Rule1 then Result := 1 else if PRangeData(Item1)^.Rule1 < PRangeData(Item2)^.Rule1 then Result := -1 else begin if PRangeData(Item1)^.Rule2 > PRangeData(Item2)^.Rule2 then Result := 1 else if PRangeData(Item1)^.Rule2 < PRangeData(Item2)^.Rule2 then Result := -1 else Result := 0 end end; |
Jetzt müsste ich das nur noch kompakter hinbekommen - obwohl, es ist eigentlich flott genug (P3/500)

0,18 Sekunden für 55984 Einträge pro Spalte.
Einen schönen sonnigen Tag noch, wünscht
Christian
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt.