![]() |
Problem mit dem Suchen nach Dateien
Moin,
![]()
Delphi-Quellcode:
Die Procedure erfüllt (anscheinend) ihren Zweck und zählt, wenn ich das ganze durch meinen iTunes Ordner laufen lasse, 15325 MP3-Dateien.
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; 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:
Diese Funktion liefert auch etwas zurück, allerdings einen anderen Wert. Sie zählt "nur" 15312 Dateien. :evil: 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... :roll:
if FindFirst(Directory + '*.*', faAnyFile and not faDirectory, SR) = 0 then
try repeat if ExtractFileExt(SR.Name) = '.mp3' then begin { * Datei-Counter um "1" erhöhen * } end; until FindNext(SR) <> 0; finally FindClose(SR); end; Ich hoffe ihr habt vllt. eine Idee :stupid: Grüße, Lukas |
AW: Problem mit dem Suchen nach Dateien
In jedem Unterpfad wird als Datei "." und ".." gefunden. Speichere doch mal alle gefundenen Dateien in einem Memo und da werden diese bestimmt mit auftauchen.
Da war jedenfalls bei mir das Problem. |
AW: Problem mit dem Suchen nach Dateien
Zitat:
Speichere das Ergebnis der ersten Variante in einer TStringList. Anschließend setzt Du 'MyList.Sorted:=True'. Das beschleunigt das suchen im 2.Teil. Im zweiten Teil entfernst Du alle Dateien, die Du gefunden hast, aus der Liste. Übrig bleiben dann die, die die ersten Version findet, die zweite jedoch nicht.
Delphi-Quellcode:
Auf diese Weise kannst Du dir die Frage dann selbst beantworten.
if FindFirst(Directory + '*.*', faAnyFile and not faDirectory, SR) = 0 then
try repeat if ExtractFileExt(SR.Name) = '.mp3' then begin i := MyList.IndexOf(SR.Name); if (i>=0) then MyList.Delete(i) else FehlerMemo.Lines.Add(SR.name+' wird von der 2.Version gefunden, aber nicht von der 1.Version'); end; until FindNext(SR) <> 0; finally FindClose(SR); end; FehlerMemo.Lines.Add('Folgende Dateien werden von der 2.Version nicht gefunden'); FehlerMemo.Lines.AddStrings(MyList); |
AW: Problem mit dem Suchen nach Dateien
Unterstützt XE2 noch nicht TDirectory.GetFiles mit einem FilterPredicate?
|
AW: Problem mit dem Suchen nach Dateien
Doch, siehe
![]() |
AW: Problem mit dem Suchen nach Dateien
Haben die nicht gelisteten Dateien evtl. eine andere Endung wie MP3, mP3 oder Mp3? Ich glaube nämlich nicht, dass ExtractFileExt alles in Kleinschreibung wandelt, habe allerdings auch nicht nachgesehen.
|
AW: Problem mit dem Suchen nach Dateien
Zitat:
Delphi-Quellcode:
TFilterPredicate = reference to function(const Path: string; const SearchRec : TSearchRec);
|
AW: Problem mit dem Suchen nach Dateien
Das Problem hat sich ergeben. Dank
![]() 13 Datein tragen die Endung '.Mp3'.
Delphi-Quellcode:
Ist '.mp3' = '.Mp3' ? Nein... Die if-Abfrage ist Case-Sensitive ARGHH! :wall::wall::wall::wall::wall::wall::wall::wall:
if ExtractFileExt(SR.Name) = '.mp3' then { ... }
@DaddyH: Hab deine Antwort garnicht gesehen, danke :) |
AW: Problem mit dem Suchen nach Dateien
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 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 by Thomas Breitkreuz