Äh, ja mir ist auch gerade eingefallen dass man die Vregleiochsoperatoren auch auf Strings anwenden kann. Hat sich also erledigt.
Aber irgendwas stimmt noch nicht:
Delphi-Quellcode:
function TBSearch.Search(SortedStrArray: TStrArray; s: String): Integer;
var
left : Integer;
middle : Integer;
right : Integer;
found : Boolean;
index : Integer;
begin
found := False;
index := -1;
left := 0;
right := Length(SortedStrArray);
while (left <= right) and (not Found) do
begin
middle := left + ((right - left) div 2);
if (SortedStrArray[middle] = s) then
begin
index := middle;
Found := True;
end;
if (SortedStrArray[middle] > s) then
right := middle - 1
else
left := middle + 1;
end;
result := index;
end;
Suche ich nach einer Zeichenkette, die nicht vorkommt, bekomme ich gleich beim ersten Vergleich
if (SortedStrArray[middle] = s) then
eine AccessViolation. Irgendwas stimmt da nicht.