Delphi-Quellcode:
function FindMatchingString(_sl: TStringList; const _s: string; out _Idx: Integer): boolean;
var
i: Integer;
begin
for i := 0 to _sl.Count -1 do begin
if StartsText(_s, _sl[i]) then begin
_Idx := i;
Result := True;
Exit; //==>
end;
end;
Result := False;
end;
Da sollte dir der Compiler um die Ohren hauen, dass das Funktionsergebnis undefiniert sein kann. Setze das Result := false; an den Anfang der Funktion, und sie ist okay.
Dennoch finde ich GERADE hier Exit sau gefährlich! Da muss nur einer mal auf die Idee kommen, noch Code hinter die Schleife zu packen, der auf jeden Fall durchlaufen werden soll.
Continue und Break haben sich bei mir bisher immer brav verhalten. Was unheimlich hilft dabei, ist es die Schleifenrümpfe brav alle in begin..end Blöcke zu verpacken, sodass der Scope immer eindeutig ist - auch optisch.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)