Directory alphabetisch sortiert einlesen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Directory alphabetisch sortiert einlesen

Beitrag von blbltheworm »

Hallo zusammen,
ich bin gerade dabei meine eigende Installationsroutine zu programmieren, jedoch stehe ich for einem (eigentlich recht simplen) Problem.
Zum erzeugen Einer Verknüpfung ins Startmenü lese ich den gesamten Ordner Startmenü\Programme mit allen Unterordnern in einen Treeview ein.
Das klappt auch ohne weiteres, jedoch stehen die Ordner nacher unsortiert im Treeview.
Wie kann ich es anstellen, dass sie in sortierter Reihenfolge angezeigt werden??
Hier mal mein bisheriger Code:

Code: Alles auswählen

Procedure CreateSubFol(FolName.s)
DirIndex.l
DirIndex=ExamineDirectory(#PB_Any,FolName,"*.*")
  Repeat 
    FileType=NextDirectoryEntry()
    If FileType=2
      If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."
        AddGadgetItem(#treeStartMen,-1,DirectoryEntryName(),picSIcon)
        OpenTreeGadgetNode(#treeStartMen)
          CreateSubFol(FolName+"\"+DirectoryEntryName())
          UseDirectory(DirIndex)
        CloseTreeGadgetNode(#treeStartMen)
      EndIf
    EndIf
  Until FileType=0
EndProcedure

StartFol.s=GetStartmenuProgramsPath()
      StartDir.l=ExamineDirectory(#PB_Any,StartFol,"*.*")
      
      Repeat 
        FileType=NextDirectoryEntry()
        If FileType=2
          If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."
            AddGadgetItem(#treeStartMen,-1,DirectoryEntryName(),picSIcon)
            OpenTreeGadgetNode(#treeStartMen)
            CreateSubFol(StartFol+"\"+ DirectoryEntryName())
              UseDirectory(StartDir)
            CloseTreeGadgetNode(#treeStartMen)
          EndIf
        EndIf
      Until FileType=0
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Es wäre nett, noch die fehlende Konstante #treeStartMen und die Prozedur GetStartmenuProgramsPath() zu posten.

Dein Code, so wie er ist, funktioniert gar nicht.


Ich mach mich trotzdem mal ran.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

Uups, tschuldigung.
#treeStartMen ist der Treeview, indem das Startmenü ausgegeben wird

Code: Alles auswählen

TreeGadget(#treeStartMen, 135, 110, 320, 160)
GetStartmenuProgramsPath() ist eine Funktion der Setup-UserLib und gibt lediglich den Pfad auf der Festplatte zu Startmenü\Programme zurück (z.B. "C:\Dokumente und Einstellungen\All Users\Startmenü\Programme").
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Das ist doch viel einfacher, oder?

Code: Alles auswählen

Enumeration
  #Window_0
  #ExplorerList_0
EndEnumeration

If OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
  If CreateGadgetList(WindowID())
    ExplorerListGadget(#ExplorerList_0, 30, 40, 160, 190, "K:\Dokumente und Einstellungen\All Users\Startmenü\Programme\")
    RemoveGadgetItem(#ExplorerList_0,0)
  EndIf
EndIf

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    If GadgetID = #ExplorerList_0
      MessageRequester("Ah-ah!","Klick mich nicht!",0)
    EndIf
  EndIf
Until Event = #PB_EventCloseWindow

End
Sicher musst du den Code noch etwas umbauen, aber so ist es doch simpler.

Keep it short, simple and powerful!
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

Einfacher ja,
aber nicht das was ich will.
1.Ich will einen Baum
2.Ich will nicht die vier Spalten
Deshalb hab ich nicht diese Möglichkeit gewählt, sondern mir das mit dem TreeView gebaut.

Kann mir jetzt eigentlich wer weiterhelfen??
Antworten