Ich hab heut die Übersicht über meine Musiksammlung verloren
Also hab ich schnell mal ein Programm geschrieben, das mir meine Musikordner vergleicht und feststellt, welche Dateien wo fehlen. (Eigentlich eine Backup-Kontrolle)
Es werden nur Dateinamen verglichen, nicht irgendwelche Inhalte!
(Das wär mir zu aufwendig)
Ausserdem muss ich noch dazusagen, dass das ganze auf einem hier veröffentlichtem Quellcode beruht. (Dem Dirscanner, meiner war einfach zu schlecht^^)
Genug geredet, Seht selbst:
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN]
Type dir Field name$ End Type
dw=GadgetWidth(Desktop())
win=CreateWindow("Ordnervergleich",0,GadgetHeight(Desktop())/4,dw,GadgetHeight(Desktop())/2,0,1)
dirpfad1=CreateTextField(10,10,dw-140,20,win) dirpfad2=CreateTextField(10,35,dw-140,20,win) wahl1=CreateButton("Wählen",dw-120,10,100,20,win) wahl2=CreateButton("Wählen",dw-120,35,100,20,win) fehlen1=CreateButton("In Ordner 1 fehlend",dw-420,60,130,20,win,3) fehlen2=CreateButton("In Ordner 2 fehlend",dw-280,60,130,20,win,3) doppelt=CreateButton("Doppelt vorhanden",dw-140,60,130,20,win,3) start=CreateButton("- - - Start - - -",10,60,dw-450,20,win) Global ergebnis1=CreateListBox(10,85,(dw-50)/3,GadgetHeight(Desktop())/2-125,win) Global ergebnis2=CreateListBox((dw-50)/3+20,85,(dw-40)/3,GadgetHeight(Desktop())/2-125,win) Global ergebnis3=CreateListBox((dw-50)/1.5+30,85,(dw-40)/3,GadgetHeight(Desktop())/2-125,win) SetButtonState fehlen1,1 AddGadgetItem ergebnis1,"Gefundene Dateien im 1. Ordner (und Unterordner)" AddGadgetItem ergebnis2,"Gefundene Dateien im 2. Ordner (und Unterordner)" AddGadgetItem ergebnis3,"Ergebnis"
Repeat Select WaitEvent() Case $803 End Case $401 Select EventSource() Case wahl1 x$=RequestDir() SetGadgetText dirpfad1,x Case wahl2 x$=RequestDir() SetGadgetText dirpfad2,x Case start ClearGadgetItems ergebnis1:ClearGadgetItems ergebnis2:ClearGadgetItems ergebnis3 dirscanner(TextFieldText(dirpfad1),ergebnis1) dirscanner(TextFieldText(dirpfad2),ergebnis2) If ButtonState(fehlen1) Then vergl1() Else If ButtonState(fehlen2) Then vergl2() Else vergl3() EndIf Notify "Fertig" End Select End Select Forever
Function dirscanner(path$,gadget) If Right$(path$,1)="\" And Len(path$)>3 Then path$=Left(path,Len(path)-1) If FileType(path$)=0 Return Local dir.dir .again pathid=ReadDir(path$) Repeat file$=NextFile$(pathid) If file$="" Then Exit If file$<>"." And file$<>".." Then Select FileType(path$+"\"+file$) Case 1 countfile=countfile+1 AddGadgetItem gadget,file Case 2 countdir=countdir+1 dir=New dir dir\name$=path$+"\"+file$ End Select End If Forever CloseDir pathid dir=Last dir If dir<>Null Then path$=dir\name$ Delete dir Goto again End If End Function
Function vergl1() For i=0 To CountGadgetItems(ergebnis2)-1 ok=False add$=GadgetItemText(ergebnis2,i) item$=Upper(add) For j=0 To CountGadgetItems(ergebnis1)-1 If item=Upper(GadgetItemText(ergebnis1,j)) Then ok=True:Exit EndIf Next If Not ok Then AddGadgetItem ergebnis3,add EndIf Next End Function
Function vergl2() For i=0 To CountGadgetItems(ergebnis1)-1 ok=False add$=GadgetItemText(ergebnis1,i) item$=Upper(add) For j=0 To CountGadgetItems(ergebnis2)-1 If item=Upper(GadgetItemText(ergebnis2,j)) Then ok=True:Exit EndIf Next If Not ok Then AddGadgetItem ergebnis3,add EndIf Next End Function
Function vergl3() For i=0 To CountGadgetItems(ergebnis1)-1 ok=False add$=GadgetItemText(ergebnis1,i) item$=Upper(add) For j=0 To CountGadgetItems(ergebnis2)-1 If item=Upper(GadgetItemText(ergebnis2,j)) Then AddGadgetItem ergebnis3,add EndIf Next Next End Function
Edit: Plattform in Titel hinzugefügt. Bitte selbstständig daran denken, danke.
MfG BladeRunner
EDIT am 11.8.2007: EXE-link entfernt, da schon vor vielen Monaten "gestorben".
EDIT 9.1.2010: Code Tags in BB-Code-Tags geändert.
|