Alle Dateien eines gegebenen Ordners als Text ausgeben



  • Wenn ich einen Ordner (Bsp: C:\Programme) habe, möchte ich alle entahltenen Dateien (keine Ordner) herausfinden und dann ausgeben. Vorallem suche ich nach der Funktion für ersteres. Die Ausgabe ist danach sicher selbst realisierbar.



  • Siehe FAQ, unter "Dateien+Verzeichnisse".



  • AndreasW hat diesen Code als Lösung, um von einem Ausgansverzeichnis die Dateien aufzulisten.

    void __fastcall GetFileList(TList*Liste,String StartDirectory)
    {
      TSearchRec sr;
      String Directory;
      int result=FindFirst((StartDirectory+"*.*").c_str(), faReadOnly|faHidden|faDirectory, sr );
      while(result==0)
      {
        Application->ProcessMessages();
    
        if((sr.Attr& faDirectory))
        {
          if (sr.Name[1]!='.')
          {
            Directory=StartDirectory+(AnsiString)sr.Name+"\\";
            GetFileList(Liste,Directory);
          }
        }
        else
        {
          pFiledata Item=new tFiledata;
          Item->Name=sr.Name;
          Item->Path= StartDirectory;
          Item->Data=sr;
          Liste->Add(Item);
        }
        result=FindNext(sr);
      }
    }
    

    Das versteh ich irgendwie nicht, warum da am Ende ein result sein muss und das ganze wird nicht als AnsiStrings ausgegeben, sondern aus Tlist. Könnt ihr mir dabei noch helfen. Es sollen _NUR_ die direkten Dateien und nicht Dateien der Unterordner gefunden werden. Nur daiteen aus dem Ordner selbst.



  • hier noch ein beispiel zu FindFirst, FindNext:

    // alle dateien in einem Verzeichnis löschen
    TSearchRec dirinfo;
    AnsiString dir = ExtractFilePath(Application->ExeName) + "temp\\";
    
    if (DirectoryExists(dir))
    {
      // dateien suchen und entfernen
      if (!FindFirst(dir + "*.*", faAnyFile, dirinfo))
      {
        DeleteFile(dir + dirinfo.Name);
    
        while (!FindNext(dirinfo))
          DeleteFile(dir + dirinfo.Name);
    
        FindClose(dirinfo);
      }
    }
    


  • Danke, Sunday. Für mein problem müsste ich dann nur die DeleteFile-zeilen durch z.B. RichEdit1->Lines->Add( "dir + dirinfo.Name" ); ersetzen?


Anmelden zum Antworten