Problem mit Verzeichniss einlesen [gelöst]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Problem mit Verzeichniss einlesen [gelöst]

Beitrag von Frogger »

Wieso wird in dem TreeGadget der letzte gefundene Ordner und die letzte gefundene Datei in einem Ordner doppelt angezeigt?
Was ist an diesem Code falsch?

Code: Alles auswählen

Procedure DirScan(DirectoryID.l, DirectoryName.s) 
  If ExamineDirectory(DirectoryID, DirectoryName, "*.*") 
    Repeat 
      entry.l = NextDirectoryEntry(DirectoryID)
      entry2.l = DirectoryEntryType(DirectoryID)
      If entry2 =#PB_DirectoryEntry_File ;Datei gefunden
        filename.s = DirectoryEntryName(DirectoryID)
        AddGadgetItem(#Tree_View, -1, filename,0,DirectoryID.l)
        AddElement(files())
        files() = DirectoryName+filename
      ElseIf entry2 = #PB_DirectoryEntry_Directory ;Ordner gefunden
        name.s = DirectoryEntryName(DirectoryID) 
        If name <> "." And name <> ".."
          AddGadgetItem(#Tree_View, -1, name, 0, DirectoryID.l)
          AddElement(files())
          files() = DirectoryName+name
          DirScan(DirectoryID+1, DirectoryName+name+"\")  
        EndIf 
      EndIf 
    Until entry = 0 
  EndIf 
EndProcedure 

//edit
Hab den fehler gefunden :freak:

So geht es :oops:

Code: Alles auswählen

Procedure DirScan(DirectoryID.l, DirectoryName.s) 
  If ExamineDirectory(DirectoryID, DirectoryName, "*.*") 
    Repeat 
      entry.l = NextDirectoryEntry(DirectoryID)
      entry2.l = DirectoryEntryType(DirectoryID)
      If entry2 =#PB_DirectoryEntry_File And entry<>0 ;Datei gefunden
        filename.s = DirectoryEntryName(DirectoryID)
        AddGadgetItem(#Tree_View, -1, filename,0,DirectoryID.l)
        AddElement(files())
        files() = DirectoryName+filename
      ElseIf entry2 = #PB_DirectoryEntry_Directory And entry<>0 ;Ordner gefunden
        name.s = DirectoryEntryName(DirectoryID) 
        If name <> "." And name <> ".."
          AddGadgetItem(#Tree_View, -1, name, 0, DirectoryID.l)
          AddElement(files())
          files() = DirectoryName+name
          DirScan(DirectoryID+1, DirectoryName+name+"\")  
        EndIf 
      EndIf 
    Until entry = 0 
  EndIf 
EndProcedure 
[PB4.20]