Einzelnen Beitrag anzeigen

blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#1

rekursionstiefe erkennen bei ordnern

  Alt 19. Sep 2014, 13:42
hallo liebe foren-mitglieder,
also, ich schreibe zzt. ein Programm um meine Musiksammlung nicht per hand in eine datenbank eingliedern zu müssen. die ordner sind in genre, künstler, album aufgeteilt. mit der findfirst methode und diesen dingen schaffe ich es eine liste aller Ordner zu erhalten und sie auszugeben. Sprich: ich habe (in dem fall) eine Textdatei oder halt eine tstringlist, in der untereinander weg erst genre, dan künstler und dann album stehen. für einen uneingeweiten ist das natürlich unübersichtlich. deswegen würde ich gerne vor die einträge schreiben etwas wie "künstler:" und "album". sozusagen unterüberschriften einfügen. die ausgabe soll im enteffekt auch dazu genutzt werden außenstehenden einen Überblick über meine Sammlung zu geben.
mein ansatz war zu erkennen, auf welcher rekursionstiefe die funktion ist, um ein entsprechendes präfix zu setzen. das funktioniert leider nicht so ganz. hier mein code der besagten methode:
Delphi-Quellcode:
procedure tform1.FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string ='*.*'; Recurse: Boolean = True);
procedure schreibename(name: string);
begin
if not (name[1] = '.') then liste.Add(name);
end;
var
SR: TSearchRec;
begin
RootFolder := IncludeTrailingPathDelimiter(RootFolder);
if Recurse then
        if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
        try
        repeat
        if SR.Attr and faDirectory = faDirectory then begin
                if (sr.name <> '.') and (SR.Name <> '..') then
         FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
         //schreibename(sr.name);
         end;
        until FindNext(SR) <> 0;
        finally
        FindClose(SR);
end;

 if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
   repeat
     if SR.Attr and faDirectory <> faDirectory then
     begin
      //FileList.Add(RootFolder + SR.Name);
       end;
      until FindNext(SR) <> 0;
     finally
   FindClose(SR);
  end;
 end;
  Mit Zitat antworten Zitat