Dabei funktioniert der Dateiabgleich noch nicht.
Ich lasse erst die Ordner mit Unterodnern durchsuchen und dann erstelle ich inner LinkedList eine Liste (wer hätte das gedacht

Die ID des ordners (über examinedirectory(#pb_any...)) in dem sich die datei befindet,der Typ (MP3 oder DIR), der Pfad, der name an sich, und die Größe.
Aber trotzdem funktioniert das "Browsen" in der Liste nicht.
Ab und an zeigt er Dateien an, die nicht in dem Ordner sind.
Vll kann mir jemand helfen?
Am besten ihr führt mein Programm mal stumpf aus, und lasst euch die komplette Liste mal debuggen (hab ich im aktuelen Code schon integriert) und guckt dann, ob ihr den Fehler in meiner "Fill_IconList()" Procedure findet..
Achja:
Komischerweise funktioniert trotz der konfusen Ordnerausgabe die Datei-Assoziation-das heisst, dass er bei mir bisjetzt, egal was ich angeklickt habe, immer die richtige MP3 wiedergegeben hat...
Gr33tz
Tafkadasom2k5
Code: Alles auswählen
Global Quit.l
Global BrowseStick.l
Global TotalMB
Global DirectoryID.s
Global dirID.l
Global momdir.s
NewList alledateien.s()
Global CurrentPath.s
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Listicon_Stick
#String_Stick
#Text_Ziel
#Button_Browse_Stick
#String_Quell
#Text_1
#Button_Browse_Quell
#CheckBox_Format
#CheckBox_Check
#Button_Proceed
#CheckBox_Directorys
#Radio_Interpret
#Radio_Letter
#ExplorerList_0
#CheckBox_Backup
#Frame3D_0
#Image_Song
EndEnumeration
;- StatusBar Constants
;
Enumeration
#StatusBar_1
EndEnumeration
;- Image Plugins
;- Image Globals
Global Image0
Global Image1
Global Image3
Global Image4
;- Catch Images
Image0 = CatchImage(0, ?Image0)
Image1 = CatchImage(1, ?Image1)
Image3 = CatchImage(3, ?Image3)
Image4 = CatchImage(4, ?Image4)
;- Images
DataSection
Image0:
IncludeBinary "test1.bmp"
Image1:
IncludeBinary "test2.bmp"
Image3:
IncludeBinary "icon1.ico"
Image4:
IncludeBinary "icon2.ico"
EndDataSection
Structure int64
Long1.l
Long2.l
EndStructure
Procedure GetStickInfoSize(Drive.s)
GetDiskFreeSpaceEx_(@Drive, BytesFreeToCaller.int64, TotalBytes.int64, TotalFreeBytes.int64)
TotalMB = ((TotalBytes\Long1 >> 20) & $FFF) | (TotalBytes\Long2 << 12)
StatusBarText(#StatusBar_1, 0, "Gesamt Speicher:" + Str(TotalMB) + "MB")
FreeMB = ((TotalFreeBytes\Long1 >> 20) & $FFF) | (TotalFreeBytes\Long2 << 12)
StatusBarText(#StatusBar_1, 1, "Freier Speicher:" + Str(FreeMB) + "MB")
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 172, 14, 809, 625, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "S-MP3 Manager v 0.1")
If CreateStatusBar(#StatusBar_1, WindowID())
AddStatusBarField(150)
AddStatusBarField(150)
EndIf
If CreateGadgetList(WindowID())
ListIconGadget(#Listicon_Stick, 30, 100, 280, 480,"",100)
StringGadget(#String_Stick, 30, 40, 150, 20, "",#PB_String_ReadOnly)
GadgetToolTip(#String_Stick, "Geben Sie hier das Ziellaufwerk manuell an, oder klicken Sie auf 'Browse' damit s-MP3 Ihnen hilft.")
TextGadget(#Text_Ziel, 30, 20, 80, 20, "Zieldatenträger:")
ButtonImageGadget(#Button_Browse_Stick, 90, 70, 60, 20, Image0)
StringGadget(#String_Quell, 350, 40, 150, 20, "",#PB_String_ReadOnly)
GadgetToolTip(#String_Quell, "Geben Sie hier das Quelllaufwerk manuell an, oder klicken Sie auf 'Browse' damit s-MP3 Ihnen hilft.")
TextGadget(#Text_1, 350, 20, 90, 20, "Quelldatenträger:")
ButtonImageGadget(#Button_Browse_Quell, 420, 70, 80, 20, Image1)
CheckBoxGadget(#CheckBox_Format, 640, 110, 130, 20, "Datenträger Formatieren")
GadgetToolTip(#CheckBox_Format, "Wenn Sie diese Checkbox aktivieren, wird der Datenträger zuerst gelöscht, bevor er neu beschrieben wird.")
CheckBoxGadget(#CheckBox_Check, 640, 300, 80, 20, "Überprüfen")
GadgetToolTip(#CheckBox_Check, "Wenn Sie diese Checkbox aktivieren, wird der Datenträger vor Beschreiben nach gleichen Dateien Untersucht. Es wird eine Medlung gezeigt, wenn 2 Dateinen auf dem Zieldatenträger als doppelt erscheinen.")
ButtonGadget(#Button_Proceed, 680, 550, 90, 30, "Ausführen")
CheckBoxGadget(#CheckBox_Directorys, 640, 180, 120, 30, "Automatisch sortieren")
GadgetToolTip(#CheckBox_Directorys, "Wenn Sie diese Checkbox aktivieren, sortiert S-MP3 die Dateinen auf dem Zieldatenträger.")
OptionGadget(#Radio_Interpret, 660, 210, 100, 30, "Nach Interpreten")
OptionGadget(#Radio_Letter, 660, 240, 100, 30, "Nach Titelnamen")
ExplorerListGadget(#ExplorerList_0, 330, 100, 280, 480, "",#PB_Explorer_HeaderDragDrop)
CheckBoxGadget(#CheckBox_Backup, 640, 140, 120, 30, "Backup tätigen")
Frame3DGadget(#Frame3D_0, 620, 80, 170, 270, "Optionen")
EndIf
EndIf
EndProcedure
Procedure Fill_List(Directory.s)
Ordner = ExamineDirectory(#PB_Any,Directory,"*.*") ;Alle Dateien Durchsuchen
Repeat ;wird wiederholt, bis das Ende des Ordners erreicht ist
Test = NextDirectoryEntry() ;Test enspricht hiernach 1 oder 2-d.H., dass man daran erkent ob es ne Datei oder n Ordner ist.
If Test = 1
If UCase(GetExtensionPart(DirectoryEntryName())) = "MP3" Or UCase(GetExtensionPart(DirectoryEntryName())) = "WMA" ;nur zur Liste hinzufügen, wenn die Dtei eine mp3 ist.
AddElement(alledateien())
alledateien() = ReplaceString(Str(Ordner) + ";" + "MP3" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize()),"\\","\")
EndIf
EndIf
If Test = 2 And DirectoryEntryName() <> "." And DirectoryEntryName() <> ".."
AddElement(alledateien())
alledateien() = Str(Ordner) + ";" + "DIR" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize())
NewDirectory.s = Directory + "\" + DirectoryEntryName()
NewDirectory = ReplaceString(NewDirectory, "\\", "\")
Fill_List(NewDirectory)
UseDirectory(Ordner)
EndIf
Until Test = 0
EndProcedure
Procedure Fill_ListIcon(CurrentDir.s)
ClearGadgetItemList(#Listicon_Stick)
ForEach alledateien()
If StringField(alledateien(),1,";") = CurrentDir
If StringField(alledateien(),2,";") = "DIR"
AddGadgetItem(#Listicon_Stick,-1,StringField(alledateien(),4,";"),Image4)
EndIf
EndIf
Next
ForEach alledateien()
If StringField(alledateien(),1,";") = CurrentDir
If StringField(alledateien(),2,";") = "MP3"
AddGadgetItem(#Listicon_Stick,-1,StringField(alledateien(),4,";"),Image3)
EndIf
EndIf
Next
EndProcedure
Procedure GUI()
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
Select EventGadgetID()
Case #CheckBox_Format
If GetGadgetState(#CheckBox_Format) = 1
DisableGadget(#CheckBox_Check,1)
ClearGadgetItemList(#Listicon_Stick)
Else
DisableGadget(#CheckBox_Backup,0)
DisableGadget(#CheckBox_Check,0)
If GetGadgetText(#String_Quell) <> ""
Fill_List(GetGadgetText(#String_Quell))
EndIf
EndIf
Case #CheckBox_Directorys
If GetGadgetState(#CheckBox_Directorys) = 1
DisableGadget(#Radio_Interpret,0)
DisableGadget(#Radio_Letter,0)
Else
DisableGadget(#Radio_Interpret,1)
DisableGadget(#Radio_Letter,1)
EndIf
Case #Button_Browse_Quell
Quellpfad.s = PathRequester("Wählen Sie den Quellpfad aus","C:/")
If Quellpfad <> "C:/" And Quellpfad <> ""
SetGadgetText(#String_Quell,Quellpfad)
SetGadgetText(#ExplorerList_0,Quellpfad)
EndIf
Case #Button_Browse_Stick
Zielpfad.s = PathRequester("Wählen Sie den Zielpfad aus","C:/")
If Zielpfad <> "C:/" And Zielpfad <> ""
SetGadgetText(#String_Stick,Zielpfad)
BrowseStick = 1
EndIf
EndSelect
EndIf
EndProcedure
Open_Window_0()
SetGadgetState(#Radio_Interpret,1)
DisableGadget(#Radio_Interpret,1)
DisableGadget(#Radio_Letter,1)
Repeat
GUI()
If BrowseStick = 1
CurrentPath = GetGadgetText(#String_Stick)
ClearGadgetItemList(#Listicon_Stick)
Fill_List(GetGadgetText(#String_Stick))
GetStickInfoSize(GetGadgetText(#String_Stick))
Standartdir.l = ExamineDirectory(#PB_Any,GetGadgetText(#String_Stick),"*.*")
Fill_ListIcon(Str(Standartdir))
BrowseStick = 0
EndIf
If EventType() = #PB_EventType_LeftDoubleClick
If GetGadgetText(#Listicon_Stick) <> ""
ForEach alledateien()
ID.s = StringField(alledateien(),1,";")
Typ.s = StringField(alledateien(),2,";")
Pfad.s = ReplaceString(StringField(alledateien(),3,";"),"\\","\")
Name.s = StringField(alledateien(),4,";")
If Name = GetGadgetText(#Listicon_Stick)
If Typ = "DIR"
Debug Pfad
ClearGadgetItemList(#Listicon_Stick)
AddGadgetItem(#Listicon_Stick,-1,"Zurueck",Image4)
NewDirID.s = Str(ExamineDirectory(#PB_Any,Pfad,"*.*"))
Fill_ListIcon(NewDirID)
EndIf
If Typ = "MP3"
RunProgram(Pfad)
EndIf
EndIf
Next
EndIf
EndIf
Until Quit = 1
ForEach alledateien()
Debug alledateien()
Next