@ErazerZ
dein code geht leider nicht in unterverzeichnise rein
@marabu
dein codem bring leider das gleiche ergbnis wie mein code:
also hier mal bischen mehr code:
Delphi-Quellcode:
function GetFilesInDirectory(ADirectory: string; AMask: String; ARekursiv: Boolean):Boolean;
var
SR: TSearchRec;
ok:Boolean;
begin
ok:=False;
if (ADirectory<>'') and (ADirectory[length(ADirectory)]<>'\') then ADirectory:=ADirectory+'\';
if (FindFirst(ADirectory + '*.*',faAnyFile ,SR)=0) then begin
repeat
if (SR.Name[1]<>'.') and ((sr.Attr or faAnyFile) = faAnyFile) and (pos(UpperCase(ExtractFileExt(sr.name)),AMask) > 0)then begin
ok:=True;
result:=ok;
end
until (ok ) or (FindNext(SR)<>0);
FindClose(SR);
end;
if ARekursiv then
if (FindFirst(ADirectory+'*.*',faDirectory,SR)=0) then begin
repeat
if (sr.name[1] <> '.') and (sr.Attr and faDirectory >0) then begin
GetFilesInDirectory(ADirectory+sr.name,AMask,ARekursiv);
end;
until (FindNext(SR)<>0);
FindClose(SR);
end;
result:=ok;
end;
procedure TPlaylisten.LoadDir(dir:String; var t:Boolean);
var
search: TSearchRec;
directory: string;
sl:TStringList;
count:Integer;
begin
directory := ExtractFilePath(dir);
t:=GetAnderDir(dir,stdext,faAnyFile or faDirectory );
if FileCount(directory,'*.M4A')>0 then begin
if Assigned(onPlaylisteAdd) then
onPlaylisteAdd(directory ,GetPrvDir(directory));
end;
// find all files
// damit auch verzeichnise eingelesen werden die keine unterverzeichnise enhalten
if (isAnder = False) and (FileCount(directory,'*.M4A')>0) then begin
if Assigned(onPlaylisteAdd) then
onPlaylisteAdd(directory ,GetPrvDir(directory));
end;
if FindFirst(directory + '*.*', $23, search) = 0 then begin
repeat
if pos(uppercase(ExtractFileExt(search.name)),stdext) > 0 then begin
if Assigned(onAddItem) then
onAddItem(directory + search.Name,search.Name);
end;
until FindNext(search) <> 0;
end;
// Subdirectories/ Unterverzeichnisse
if FindFirst(directory + '*.', faDirectory, search) = 0 then begin
repeat
if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then begin
isAnder:=True;
if t = False then
if (Assigned(onPlaylisteAdd)) and ((FileCount(directory,'*.M4A')>0)) then onPlaylisteAdd(directory + search.Name,search.Name);
LoadDir(directory + search.Name + '\',t);
isAnder:=False;
end;
until FindNext(search) <> 0;
FindClose(search);
end;
//if t = false then
if Assigned(onplaylistnewadd) then onplaylistnewadd(GetAnderDir(directory + search.Name + '\',stdext,faDirectory));
end; // LoadDir
so loaddir soll jetzt verschiedne verzeichnise komplet einlesen und dabei sortieren das einlesen habe ich hinbekommen nur das mit der Filterfunktion leider nicht.
ich erzeuge daraus eine baumstruktur darum die drei ereignise ich denke sie sollte selbsterkläerend sein.
ich hatte folgende gedanken:
programm sucht im angeben verzeichnise nach unterverzeichnisen mit den entsprechenden endungen.
findet es was soll der root knoten das suchverzeichnis dastellen z.b.
ich suche jetzt in c:\music soll der rooknoten music heißen
soablt er was findet soll er es den root knoten hinzufügen
dann das nächte verzeichnis: sind dort die gesuchten dateien drin hinzufügen zum baum allerding soll das hauptverzeichnis von den dateien ebenfall im zum root dazugeben werden z.b.
c:\Music\1\1.m4a
jetzt suche ich nach m4a soll der baum so aussehen:
Music
1
1.m4A
ich hoffe ihr versteht wie ich meine. ich schaffe es einfach nicht.