Der Vergleich führt nicht zur Zugriffsverletzung, sondern der Versuch, auf das Element 'middle' zuzugreifen, welches dann vermutlich außerhalb des Bereiches ist. Ändere mal diese Zeilen;
Delphi-Quellcode:
left := 0;
right := Length(SortedStrArray);
in
Delphi-Quellcode:
left := Low (SortedStrArray);
right := High(SortedStrArray);