Hi marabu,
danke für den Tipp. Mein Code sieht jetzt so aus:
Delphi-Quellcode:
function binsuche(nname: string; list: TList; lbound, ubound: integer): integer;
var
tdx: integer;
begin
if lbound > ubound then begin
Result := -1;
Exit;
end;
tdx := lbound + ( (ubound - lbound) div 2 );
if list[tdx].n_name = nname then begin
Result := tdx;
Exit;
end;
if list[tdx].n_name > nname then
Result := binsuche(nname, list, 1, tdx)
else
Result := binsuche(nname, list, tdx, ubound);
end;
Wenn ich nun nach dem letzten Element der Liste suche, bekomme ich einen Stack Overflow um die Ohren gehauen und das Programm beendet sich (ist ein Konsolenprogramm).
@hoika: Danke, ich guck mir den Code mal an und vergleiche und versuche den Fehler zu finden.
Chris
Edit:
Fehler schon gefunden.
Ich habe die Rekursionsgrenzen etwas verändert:
Delphi-Quellcode:
if list[tdx].n_name > nname then
Result := binsuche(nname, list, 1, tdx-1)
else
Result := binsuche(nname, list, tdx+1, ubound);
So funktioniert's. Danke für eure Hilfe.