![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Hi Profaner.
Hat jemand ne vorgefertigte Funktion mit der ich einen Ordner samt Unterordnern löschen kann? Ich habs schon mit SHFileOperation probiert, das hat aber nicht immer geklappt und auch nicht mein Favorit. RmDir in XProfan macht das nicht. Da fällt mir momentan nur eine rekursive Funktion auf, die alle Ordner abarbeitet, die in dem Stammordner liegen. Jac
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Hi Jac!
Code:
' ________________________________________________________________________________________________________________ ' Löscht ein gesamtes Verzeichnis inklusive aller Dateien und Unterverzeichnisse ' ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Def &FO_DELETE $3 Def &FOF_NOCONFIRMATION $10 Def SHFileOperation(1) !"Shell32.DLL","SHFileOperationA" Cls Declare shfileopstruct#,text$ STRUCT SHFILEOPSTRUCT = hwnd&,wFunc&,pFrom&,pTo&,fFlags&,fAnyOperationsAborted&,hNameMappings&,lpszProgressTitle& Proc DeleteWholeDirectory ' löscht ein gesamtes Verzeichnis inklusive aller Dateien und Unterverzeichnisse Parameters path$ Declare files$,aborted& files$ = path$ + "\\*.*" + Chr$(0) Dim shfileopstruct#,SHFILEOPSTRUCT shfileopstruct#.hwnd& = %HWnd shfileopstruct#.wFunc& = &FO_DELETE shfileopstruct#.pFrom& = Addr(files$) shfileopstruct#.pTo& = 0 shfileopstruct#.fFlags& = &FOF_NOCONFIRMATION shfileopstruct#.fAnyOperationsAborted& = Addr(aborted&) shfileopstruct#.hNameMappings& = 0 shfileopstruct#.lpszProgressTitle& = 0 SHFileOperation(shfileopstruct#) Dispose shfileopstruct# ' kompletter Inhalt des Ordners wurde gelöscht, nur noch Ordner selber löschen RmDir path$ EndProc ' ________________________________________________________________________________________________________________ ' Beispiel ' ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ text$="C:\Test" Case DirExists(text$): DeleteWholeDirectory(text$)
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (09.08.2009 um 16:37 Uhr) |
|
|
|
|
|
#3 (Direktlink) | |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
|
@Jac
Mit der Procedur kannst du sogar bestimmen, ob die Daten in den Papierkorb oder sofort gelöscht werden. Zitat:
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Ja, das klappt bei mir auch, brauchs ohne Dialog. Das geht auch, das weiß ich und ich weiß auch wie, ich dachte nur es kennt jemand eine profane Variante ohne SHFileOperation.
Jac
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#5 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
|
@Jac
Da dürfte es keine "profane" (einfache) Variante geben. Du müsstest in das Verzeichnis (wenn da noch 5 Unterverzeichnisse mit Dateien sind.... PS: Mein Code ist nicht von mir - weiß aber auch nicht, wer ihn geschrieben hat. Nur zur Information
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Ok, vielen Dank. Dann nehme ich doch ein verstummtes SHFileOperation.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#7 (Direktlink) |
|
Gast
Beiträge: n/a
|
IFs File Inc und Unit hat fDeltree und geht schon immer!
|
|
|
|
#8 (Direktlink) |
|
Gast
Beiträge: n/a
|
|
|
|
|
#9 (Direktlink) |
|
Gast
Beiträge: n/a
|
Hier wirds auch mal benutzt sagt google http://quelltext.xprofan.com/src/11974126759144.txt aber ist schon ein alter Quelltext.
|
|
|
|
#10 (Direktlink) | |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Zitat:
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
|
#11 (Direktlink) |
|
Gast
Beiträge: n/a
|
|
|
|
|
#12 (Direktlink) |
|
Gast
Beiträge: n/a
|
Da hab ich die gefunden!
|
|
|
|
#13 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
|
Oh, ein iF - Fan
stell dich doch mal vor
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
#14 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
|
Hey Du UFO (unbekanntes Forum Object) -
stimmt zwar, dass es in der file.pcu eine Funktion deltree gibt, aber in der HPGL-Paket's file.inc sollte diese nicht enthalten sein. Auszug aus der Unit: Code:
proc ?_deltree (string dname) export "Löscht alle Dateien und Ordner in 'dname', einschließlich 'dname' und gibt als Ergebnis den Erfolg wieder. FDeltree ist nicht 'Geschwindigkeits', sondern 'Sicherheitsorientiert' programmiert. Sollte irgend ein Problem wärend der Operation auftauchen wird abgebrochen und 0 (null) zurückgeliefert." bool fail=false int ofmode=get("FileMode") set("FileMode",2) string op=?_getdir() if (direxists(dname)) if (?_chdir(dname)) casenot (?_path.intern.rmdirandfiles(?_getdir())) : fail=true else fail=true endif endif chdir op casenot (fail) : casenot (?_rmdir(dname)) : fail=true set("FileMode",ofmode) return not(fail) endproc proc ?_getdir export "Vergleichbar mit getdir$('@') - aber die Ausgabe endet nicht unterschiedlich mal mit \ - oder ohne \." string s=getdir$("@") casenot (right$(s,1) == "\") : s=s+"\" return s endproc proc ?_path.intern.rmdirandfiles (string dname) noexport bool fail=false string org=dname string oldp=?_getdir() string fle="",op,newp if (?_chdir(dname)) fle=?_ff() while ( (len(fle)>0) and (not(fail)) ) if ( ( mid$(fle,1,1)=="[" ) and ( mid$(fle,len(fle),1)=="]" ) ) if ( direxists(mid$(fle,2,len(fle)-2)) ) fle=mid$(fle,2,len(fle)-2) op=?_getdir() newp=?_getdir()+fle casenot (?_path.intern.rmdirandfiles(newp)) : fail=true casenot (fail) : casenot (?_chdir(op)) : fail=true casenot (fail) : rmdir newp elseif ?_exist(fle) casenot (?_delete(fle)) : fail=true else fail=true endif else casenot (?_delete(fle)) : fail=true endif casenot fail : fle=?_ff() wend endif ?_chdir (oldp) return not(fail) endproc proc ?_rmdir (string dname) export "Löscht ein leeres Verzeichnis 'dname' (ohne alles/spielereien) und gibt den Erfolg als Rückgabewert zurück." case direxists(dname) : rmdir dname$ return if(direxists(dname),false,true) endproc proc ?_chdir (string dname) export "Wechselt in das Verzeichnis 'dname' und gibt den Erfolg als Rückgabewert zurück." casenot direxists(dname) : return false string oldDir=?_getdir() bool fail=false if ioresult//ioresult zurücksetzen endif chdir dname fail=if(ioresult,true,false) case fail : chdir oldDir return not(fail) endproc proc ?_delete (string fname) export "Löscht die Datei 'fname' und liefert als Rückgabewert den Erfolg zurück." bool fail=false int ofmode=get("FileMode") set("FileMode",2) int fh=assign(fname) casenot fh : fail=true ifnot fail erase #fh% case ?_exist(fname) : fail=true assign #fh%,"" endif set("FileMode",ofmode) return not(fail) endproc proc ?_exist (string fname) export "Gibt als Rückgabewert die Existenz der Datei 'fname' zurück." //ein paar Dinge welche sich bewährt hatten case fname=="[.]" : return false case fname=="[..]" : return false casenot fileexists(fname) : return false casenot len(findfirst$(fname)) : return false return true endproc
__________________
Programmieren für Anfänger. |
|
|
|
|
|
#15 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Wow, ich hatte mehr an ein verschachteltes FindFirst/FindNext gedacht.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| umbenennen von unterordnern? | faQ | Software - Allgemein | 4 | 21.03.2005 15:34 |