Einzelnen Beitrag anzeigen

ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#1

Problem mit dem Suchen nach Dateien

  Alt 11. Aug 2013, 18:22
Moin,
hier gibt es ein schönes Beispiel, wie man rekursiv nach Dateien suchen kann. Ich benutze diese Procedure in einer Abwandelung, den ich möchte nach mehreren Masken suchen und die Datein nur zähen, nicht auflisten (zumindestens nicht in einer ListBox oder ählichem, ich speichere die DateiInfo in einem Array). Deshalb habe ich erstmal etwas getestet. Der interessante Teil ist das hier:

Delphi-Quellcode:
  if FindFirst(Directory + Mask, faAnyFile and not faDirectory, SR) = 0 then // Mask := '*.mp3';
    try
      repeat
        { * Datei-Counter um "1" erhöhen * }
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
Die Procedure erfüllt (anscheinend) ihren Zweck und zählt, wenn ich das ganze durch meinen iTunes Ordner laufen lasse, 15325 MP3-Dateien.

Nun kommt die Modifizierte Funktion. Meine Idee war es, einfach alle Dateien (daher auch keine eindeutige Mask, sondern '*.*') und dann später die DateiEndung zu extrahieren und mit einer Liste zu vergleichen. Dazu wollte ich etwas testen und habe das ganze so umgeschrieben:

Delphi-Quellcode:
  if FindFirst(Directory + '*.*', faAnyFile and not faDirectory, SR) = 0 then
    try
      repeat
       if ExtractFileExt(SR.Name) = '.mp3then
       begin
         { * Datei-Counter um "1" erhöhen * }
       end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
Diese Funktion liefert auch etwas zurück, allerdings einen anderen Wert. Sie zählt "nur" 15312 Dateien. Also 13 Dateien weniger als die "Original Procedure". Ich konnte bis jetzt nicht herausfinden warum. Meine einzige Vermutung war, das vllt. ein Album (kommt mit 13 Dateien ja ziemlich gut hin) einen "Fehler" hat. Also das die Datei z.B. "01 Intro.txt.mp3" heißt und FindFirst die "Richtige Endung" findet, also *.mp3 und ExtractFileExt auf das *.txt kommt und daher diese Datei ausschließt. Allerdings ist das schon ziemlich weit hergeholt...

Ich hoffe ihr habt vllt. eine Idee

Grüße,
Lukas
Lukas
  Mit Zitat antworten Zitat