Ich hatte neulich auch Probleme mit sortierten StringListen und Zeichen wie "-". Der Punkt ist wohl, dass Funktionen wie AnsiCompareText standardmäßig etwas mehr machen als erwartet:
https://entwickler-ecke.de/viewtopic.php?t=118089
U.a. werden Bindestriche bei der Sortierung damit
nicht berücksichtigt.
Probier mal, deine Stringvergleiche (aktuell mit <, >, =) durch AnsiCompareText zu ersetzen. Dann sollte dein Vergleich für die binäre Suche mit dem Vergleich übereinstimmen, der für die Sortierung verwendet wird.
The angels have the phone box.