If und While ist nicht Suppe in diesem Fall wegen dem Break
weil mit While wird bei Break nur die While schleife abgebrochen und es wird weitergesucht. Bei einem If unterbricht Break die repeat schleife, und die willst du ja unterbrechen.
Und was ich vorhin vergessen habe, nach dem FindPath sollte auch ein Break stehen was Result <> '' ist.
Delphi-Quellcode:
function FindPath(ToBeFound, Path : string) : string;
var
ASearchRec : TSearchRec;
begin
Result := '';
if Path[Length(Path)] <> '\' then
Path := Path + '\';
if FindFirst(Path + '*.*', faDirectory, ASearchRec) = 0 then
begin
repeat
if ((ASearchRec.Attr and faDirectory) = faDirectory) and
(ASearchRec.Name <> '..') and
(ASearchRec.Name <> '.') then
begin
if CompareText(ToBeFound, ASearchRec.Name) = 0 then
begin
Unit1.Form1.ListBox1.Items.Add(BuildFileName(Path, ASearchRec.Name));
Result := BuildFileName(Path, ASearchRec.Name);
Break;
end
else
begin
Result := FindPath(ToBeFound, BuildFileName(Path, ASearchRec.Name));
if Result <> '' then Break;
end;
end;
until FindNext(ASearchRec) <> 0;
FindClose(ASearchRec);
end;
end;