[B+] Ordnerinhalte vergleichen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Eingeproggt

Betreff: [B+] Ordnerinhalte vergleichen

BeitragDo, Dez 28, 2006 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab heut die Übersicht über meine Musiksammlung verloren Smile
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]

;---------Initialisierungen---------
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"

;---------Hauptschleife---------
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

;---------Funktionen---------
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.
  • Zuletzt bearbeitet von Eingeproggt am Sa, Jan 09, 2010 16:31, insgesamt 5-mal bearbeitet
 

snörkl

BeitragDo, Dez 28, 2006 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
das funkt bei mir nicht, er erkennt gadgetwidth usw. nicht. Ich habe bb3d, hast dus mit blitz max geproggt?

BtbN

BeitragDo, Dez 28, 2006 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich tippe mal eher auf B+

Eingeproggt

BeitragDo, Dez 28, 2006 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut getippt,
Hab ich vergessen zu sagen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

snörkl

BeitragFr, Dez 29, 2006 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst dus kompilieren und dann hier hochladne, ist ne tole idee und ich würds gerne ausproben

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group