DeleteDir Ordner Löschen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Progger93

BeitragMi, Mai 05, 2010 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ClearDir heißt die Funktion die er selbst definiert hat. Du solltest dich ein wenig mit dem Code befassen den du vor dir liegen hast. Wink
@Thunder: bei mir geht deine Ordner Struktur....
MfG Pascal
Win 7|T7250@2.0Ghz|3GB RAM|M8600GT

flona

BeitragMi, Mai 05, 2010 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde es ist eher eine schlechte Idee einfach alle Ordner mit den Namen der Spielehersteller zu löschen:
1. Kann es auch sein, dass Dateien außerhalb dieser Ordner abgelegt werden, die somit nicht gelöscht werden.
2. Werden die Überbleibsel in der Registry nicht gelöscht
3. Kann es dadurch auch zu ungewünschtem Datenverlust kommen. z.B. wenn man einen Ordner EA-Games mit lauter Wallpaper drinnen hat werden diese ebenfalls gelöscht.

Aus meiner Sicht bessere Vorgehensweise:
- Alle installierten Programme aus der Registry auslesen
- Dort die Publisher-Einträge mit deinen Herstellern vergleichen
- (Und auf Nachfrage beim User) den Uninstaller des Programms ausführen

Auf diese Weise werden die Programme normalerweise restlos von der Platte entfernt.

Ich hab dir mal (ausnahmsweise) den größten Teil der Arbeit abgenommen:
BlitzBasic: [AUSKLAPPEN]
Const HKEY_LOCAL_MACHINE = $80000002
Const KEY_READ = $20019
Const ERROR_NO_MORE_ITEMS = 259

; Öffnet das Uninstall-Verzeichnis in der Registry
Local bKey = CreateBank ( 4 )
RegOpenKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", 0, KEY_READ, bKey )
Global hKey = PeekInt ( bKey, 0 )
FreeBank bKey

; Geht alle installierten Programme durch
Local index = 0
Local keyName = CreateBank ( 256 )
Local keySize = CreateBank ( 4 )
Repeat
PokeInt keySize, 0, 256
Local ret = RegEnumKeyEx ( hKey, index, keyName, keySize, 0, 0, 0, 0 )
If ret = ERROR_NO_MORE_ITEMS Then Exit

Print "----------"
Print GetProperty ( keyName, "DisplayName" )
Print GetProperty ( keyName, "Publisher" )
Print GetProperty ( keyName, "UninstallString" )

index = index + 1
Forever
FreeBank keyName
FreeBank keySize

RegCloseKey ( hKey )

WaitKey

Function GetProperty$ ( keyName, Value$ )
Local valueNameStr$, i
Local valueName = CreateBank ( 256 )
Local valueSize = CreateBank ( 4 )
PokeInt valueSize, 0, 256

RegGetValue ( hKey, keyName, Value$, $FFFF, 0, valueName, valueSize )
valueNameStr$ = ""
For i = 1 To PeekInt ( valueSize, 0 )
valueNameStr$ = valueNameStr$ + Chr ( PeekByte ( valueName, i-1 ) )
Next

FreeBank valueName
FreeBank valueSize

Return valueNameStr$
End Function


advapi32.decls hat Folgendes geschrieben:
.lib "Advapi32.dll"
RegOpenKeyEx%(hKeyParent%,SubKey$,reserved%,des%,phkResult*):"RegOpenKeyExA"
RegCloseKey%(hKey%):"RegCloseKey"
RegEnumKeyEx%(hKey%,idx%,Key*,size*,reserved%,class%,lpClass%,writetime%):"RegEnumKeyExA"
RegGetValue%(hkey%,lpSubKey*,lpValue$,dwFlags%,pdwType%,pvData*,pcbData*):"RegGetValueA"
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit
  • Zuletzt bearbeitet von flona am Do, Mai 06, 2010 6:39, insgesamt einmal bearbeitet

Chrise

BeitragMi, Mai 05, 2010 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Funktion heißt ClearDir und verwendet sich selbst. Das funktioniert. Probiers aus Wink
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.
 

Sterbendes Lüftlein

Betreff: hilfe

BeitragMi, Mai 05, 2010 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Thunder

BeitragMi, Mai 05, 2010 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Indem du den Stackrahmen der PE änderst damit du keinen Stackoverflow erntest wenn die Rekursion zu tief geht.
Nein - Was meinst du damit: "maximale Zahl an Verzeichnissen erweitern" ?
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Starwar

BeitragMi, Mai 05, 2010 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst Dinge in Types ablegen und später bearbeiten/einen neuen Baum eröffnen, aber einer Bestimmten tiefe, nachdem der alte abgearbeitet wurde...
Aber ich werde dir keinen Code geben, du bist mir zu ungeduldig.
MFG
 

Sterbendes Lüftlein

BeitragMi, Mai 05, 2010 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Holzchopf

Meisterpacker

BeitragMi, Mai 05, 2010 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei allem Respekt, aber das kratzt hier keinen. Nimm, was du bekommst, wenn du damit nichts anfangen kannst, solltest du dich nicht wundern, wenn dir die Hilfe wortwörtlich davonläuft.

Edit
Falls dein Posting oben lieb gemeint war, ignorier meinen Einwand einfach.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Silver_Knee

BeitragMi, Mai 05, 2010 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
also für deine Zwecke reicht die funktion von crise/progger93

https://www.blitzforum.de/foru...794#366794

Der trick hierbei ist zu testen ob Nextfile einen Ordner zurück gibt und im dem Fall den ordner mit der eigenen funktion zu löschen (die wiederum ein nextfile hat, dass evtl einen ordner zurückgibt sodass dieser versucht wird mit der eigenen funktion zu löschen [die wiederum...])

das nennt man Rekursionen.

Alternativ kann man das auch von der cmd.exe machen lassen mit

ExecFile "cmd /C rd "+ordner$+" /S /Q"
cmd startet cmd.exe
/C lässt das nun folgende von cmd als kommando ausführen
rd entfernt ordner und ist ein cmd-Befehl
/S lässt rd unterordner löschen
/Q unterdrückt das "möchten sie wirklich löschen" von rd

Chrise

BeitragDo, Mai 06, 2010 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiß, hat Windows doch sowieso schon eine maximal-Beschränkung an Ordnern, die inneinander verschachtelt sein dürfen Wink
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

Thunder

BeitragDo, Mai 06, 2010 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiß mit NTFS nicht mehr. NTFS ist nur noch auf die Größe der Festplatte beschränkt. Unendlich große Festplatte -> unendliche Rekursionstiefe.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group