Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FindFile function funktzt net (https://www.delphipraxis.net/26112-findfile-function-funktzt-net.html)

Master_BB 18. Jul 2004 17:00


FindFile function funktzt net
 
Hya,
nun hab ich den selben Psydo fehler bei meiner FindFile Funktion wie bei der FindPath bzw FindDir funktion.
Er such und er findet. Jedoch wird der fund nur in meine listbox ausgegeben - Result wird nicht gefüllt.
Könnte es einer mal testen ob es bei ihm läuft ich schnall nicht warum nicht geht.

Delphi-Quellcode:
function TForm1.FindFile(ToBeFound, ASearchPath : string) : string;
var
  ASearchRec : TSearchRec;
begin
  Result := '';

  if ASearchPath[Length(ASearchPath)] <> '\' then
    ASearchPath := ASearchPath + '\';

  if FindFirst(ASearchPath + '*.*', faAnyFile, ASearchRec) = 0 then
  begin
    repeat
      if CompareText(ToBeFound, ASearchRec.Name) = 0 then
      begin
        ListBox1.Items.Add(ASearchPath + ASearchRec.Name);
        Result := ASearchPath;
        Break;
      end;
    until FindNext(ASearchRec) <> 0;
  end;
  FindClose(ASearchRec);

 if FindFirst(ASearchPath + '*.*', faDirectory, ASearchRec) = 0 then
 begin
   repeat
     if ((ASearchRec.Attr and faDirectory) = faDirectory) and
        (ASearchRec.Name                  <> '..')       and
        (ASearchRec.Name                  <> '.')        then
     begin
       FindFile(ToBeFound, ASearchPath + ASearchRec.Name);
     end;
   until FindNext(ASearchRec) <> 0;
 end;
 FindClose(ASearchRec);  
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(FindFile(Edit1.Text,'E:\'));
end;
in der Listbox wird der Pfad mit der gefundenen file sehr schön angezeigt aber nicht in der messagebox
da Result = '' ist anstatt das da ASearchPath drin ist

Greetz
Master_BB

Matze 18. Jul 2004 17:04

Re: FindFile function funktzt net
 
Du musst ASearchPath als Result übergeben, damit du die Funktion so aufrufen kannst, also einfach in der Funkiotn:

Delphi-Quellcode:
Result := ASearchPath;
Edit, also ich meine am Ende der Funktion.

Master_BB 18. Jul 2004 17:07

Re: FindFile function funktzt net
 
wiso am ende der funktion?
was ist wenn er nichts findet?
es reicht doch wenn Result der Path zugewiesenwird
wenn ToBeFound mit der gefundenen Datei übereinstimmt... oder nicht?

und wo genau soll ich result nocheinmal zuweisen?

Matze 18. Jul 2004 17:11

Re: FindFile function funktzt net
 
Ich hab deinen Code gerade getestet, in meiner ListBox wird gar nichts angezeigt. :gruebel:

Master_BB 18. Jul 2004 17:12

Re: FindFile function funktzt net
 
naja du solltest nach etwas suchen was es auch gibt und das verzeichnis vieleicht ändern
wenn du kein e:\ hast

- bei mir zeit er mir die file an

Matze 18. Jul 2004 17:16

Re: FindFile function funktzt net
 
Ach ne, blöd bin ich auch net!

rantanplan99 18. Jul 2004 17:17

Re: FindFile function funktzt net
 
Delphi-Quellcode:
function TForm1.FindFile(ToBeFound, ASearchPath : string) : string;
var
  ASearchRec : TSearchRec;
begin
  Result := '';

  if ASearchPath[Length(ASearchPath)] <> '\' then
    ASearchPath := ASearchPath + '\';

  if FindFirst(ASearchPath + '*.*', faAnyFile, ASearchRec) = 0 then
  begin
    repeat
      if CompareText(ToBeFound, ASearchRec.Name) = 0 then
      begin
        ListBox1.Items.Add(ASearchPath + ASearchRec.Name);

//        Result := ASearchPath;
// Wieso weisst du den Pfad zu?? muss das nicht heissen
        Result := ASearchPath + ASearch.Name;

        Break;
      end;
    until FindNext(ASearchRec) <> 0;
  end;
  FindClose(ASearchRec);

//
  if Result <> '' then exit;
// Die Zeile bitte einfügen, weil du musst die Unterverzeichnise nicht durchsuchen
// wenn du die Datei schon gefunden hast

if FindFirst(ASearchPath + '*.*', faDirectory, ASearchRec) = 0 then
begin
   repeat
     if ((ASearchRec.Attr and faDirectory) = faDirectory) and
        (ASearchRec.Name                  <> '..')       and
        (ASearchRec.Name                  <> '.')        then
     begin

//       FindFile(ToBeFound, ASearchPath + ASearchRec.Name);
// Hier der selbe fehlder wie anfangs bei deiner FindDir funktion.
     Result := FindFile(ToBeFound, ASearchPath + ASearchRec.Name);
     if Result <> '' then break; // Abbruch wenn was gefunden wurde im Unterverzeichnis



     end;
   until FindNext(ASearchRec) <> 0;
end;
FindClose(ASearchRec);  
end;
Ich hab mal korrigiert, und es mit // gekennzeichnet

Master_BB 18. Jul 2004 17:19

Re: FindFile function funktzt net
 
ah THX ratanplan99
ich weise nur den pfad zu da ich nur den pfad benötige wo die gesuchtefile drin ist
- aber es klappt jetzt

JETZT hab ich auch endlich den fehler von FindDir gesehn


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz