Michael,
vielleicht solltest du das noch etwas optimieren.
Delphi-Quellcode:
var ...
relationship : integer;
begin
...
relationship := CompareStr(SortedStrArray[middle], s);
if relationship < 0 then begin
// SortedStrArray[middle] < s
else if relationship=0 then begin
// SortedStrArray[middle] = s
else begin
// SortedStrArray[middle] > s
end;
...
end;
Warum :
Bei deiner Konstruktion vergleichst du in der While-Schleife die Strings (bis auf den letzten Durchlauf) immer zwei Mal.
So, wie oben dargestellt, vergleichst du die Strings immer nur ein Mal und prüfst danach einen Integerwert, was deutlich schneller geht.