Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordnerinhalt auslesen (https://www.delphipraxis.net/123373-ordnerinhalt-auslesen.html)

knolli 31. Okt 2008 19:52


Ordnerinhalt auslesen
 
Hi,

auch nach längerem Suchen bin ich leider auf keine Lösung meines Problems gestoßen. Ich möchte mein Programm eine Liste erstellen lassen von den (Film-)Dateien die sich in einem Ordner befinden. Nun habe ich des Öfteren schon gelesen, das es mit FindFirst usw gehen soll. Als ich das aber ausprobiert habe, so wie es in der Hilfe steht, kam der Fehler "Ungültiges Zeichen in ..." ich habe alles so gemacht wie in der Hilfe beschrieben (natürlich für mein Prog umgeschrieben) und es geht nicht. Mit diesem ListView oder wie das heißt, habe ich noch nie gearbeitet und wöllte es auch nicht so gern damit machen. Also bitte ich mal wieder erfahrenere Programmierer mir zu helfen und mir ein Lehrer zu sein. :)

scrat1979 31. Okt 2008 19:57

Re: Ordnerinhalt auslesen
 
Vielleicht hilft Dir folgender Eintrag der Codelibrary weiter: hier

knolli 31. Okt 2008 20:01

Re: Ordnerinhalt auslesen
 
Oh mein Gott!

Na da hab ich ja mal wieder mist gebaut...
Gesucht und gedacht nix gefunden zu haben...

Tut mir leid das ich nicht richtig gesucht habe...


aber herzlichen dank für den Hinweis!

knolli 1. Nov 2008 13:35

Re: Ordnerinhalt auslesen
 
Jetzt muss ich doch noch einmal melden. Ich habe mir das Beispiel hier
Delphi-Quellcode:
procedure FindAllFiles(const FileList: tstrings;RootFolder: string; Maske: array of string; Recurse: Boolean = True);
var
  SR: TSearchRec;
  i : integer;
begin
  RootFolder := IncludeTrailingPathDelimiter(RootFolder);

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Maske, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  i := 0;
  repeat
    begin
      if FindFirst(RootFolder + '*' + Maske[i], faAnyFile, SR) = 0 then
      try
        repeat
          if SR.Attr and faDirectory <> faDirectory then
          begin
            // --> eine Datei wurde gefunden
            //   der Dateiname steht in SR.Name
            //   der vollständige Dateiname (inkl. Pfadangabe) ist
            //       RootFolder + SR.Name
            FileList.Add(RootFolder + SR.Name);
          end;
        until FindNext(SR) <> 0;
      finally
        FindClose(SR);
      end;
      i := i + 1;
    end
  until
    i = high(maske) + 1;
end;
angeschaut.
Da müsste ich ja in der ButtonClick-Procedure FindAllFiles([Hier muss ja eine Stringlist mitgegeben werden oder?],[Verzeichnis ist klar],[Eine Maske muss her],True) aufrufen.

Wenn ich das so mache, bekomme ich aber eine fehlermeldung, das eine ungültige Pointeroperation vorhanden ist. Die meldung bekomme ich erst bei laufender exe. wenn ich die exe ohne delphi starte bkomme ich auch nur diese meldung. woran liegt das?



[EDIT]
Hab nach einigem Probieren meine Hänger selbst gelöst. Also trotzdem Danke für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.

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