Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 186
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 69, Antworten: 6
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09.08.2009, 16:04   #1 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard RmDir mit Unterordnern

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
Jac de Lad ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 09.08.2009, 16:27   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

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$)

Eigentlich ist SHFileOperation aber die bevorzugte Lösung, bist du sicher, das du nicht nur einen Fehler eingbaut hast? Ich habe keine Probleme mit der Lösung.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (09.08.2009 um 16:37 Uhr)
Frabbing ist offline   Mit Zitat antworten
Alt 09.08.2009, 17:04   #3 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Standard

@Jac
Mit der Procedur kannst du sogar bestimmen, ob die Daten in den Papierkorb oder sofort gelöscht werden.

Zitat:
Def @SHFileOperation(1) !"SHELL32","SHFileOperationA"
DEF neq(2) @!(1) <> @!(2)
'-----------------------------------------
PROC DATEN_AKTION
Parameters Action$,File$,File2$,noconfirm%,norecycle%
'Messagebox(file$,file2$,64)
' Parameter 1: Auszuführende Aktion=COPY, DELETE, RENAME, MOVE
' Parameter 2: Quelldatei
' Parameter 3: Zielldatei
' Parameter 4: 0 = User erst fragen, 1= ohne Nachfrage löschen
' Parameter 5: 0 = In Papierkorb verschieben, 1= "endgültig" löschen
'Messagebox(file$,file2$,64)
'end
Declare FOF_Flag%,Action&,DO%,Fehler&
Declare opstruct#,file#,file2#
'LET DO%=0
IF @upper$(Action$)="RENAME"
Let Action&=4
elseIF @upper$(Action$)="COPY"
Let Action&=2
elseIF @upper$(Action$)="MOVE"
Let Action&=1
elseIF @upper$(Action$)="DELETE"
Let Action&=3
else
@messagebox("Diese Funktion ist nicht bekannt!","Aktion wird nicht ausgeführt!",64)
LEt DO%=1
endif
IF DO%=0
Case noconfirm% : Let noconfirm%=16
CaseNot norecycle% : Let norecycle%=64
Let FOF_Flag% = (noconfirm%+norecycle%)
Dim opstruct#,60
Dim file#,(Len(file$)+2)
Dim file2#,(Len(file2$)+2)
String file#,0=(file$+@Chr$(0))
String file2#,0=(file2$+@Chr$(0))
Long opstruct#,0=%hwnd ' Handle des aufrufenden Fensters
Long opstruct#,4=Action&
Long opstruct#,8=file# ' pfrom : hier der zu löschende Ordner
Long opstruct#,12=file2# ' pto (muß 0 oder eine Bereichvar. mit Zieldateinamen ' z.B. bei Umbenennung sein
Word opstruct#,16=FOF_Flag%
Long opstruct#,18=0 ' Hier steht nach dem Aufruf 1, wenn User abgebrochen hat
Long opstruct#,22=0 ' Unbedingt immer auf Null setzen!
Long opstruct#,26=0 ' Zeiger(Bereich) auf Überschrift des Fortschrittsdialogs
LET FEHLER&=@ShFileOperation(opstruct#)
IF (@long(opstruct#,18)=1)
@MessageBox("Die Dateioperation wurde abgebrochen!","Operation abgebrochen!",64)
'ELSEIF @neq(Fehler&,0)
'@MessageBox("Es ist ein Fehler aufgetreten","ShFileOperation "+@str$(Fehler&),16)
EndIf
Dispose file#
Dispose file2#
Dispose opstruct#
endif
ENDPROC
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Alt 09.08.2009, 17:09   #4 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

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
Jac de Lad ist offline   Mit Zitat antworten
Alt 09.08.2009, 17:14   #5 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag

@Jac
Da dürfte es keine "profane" (einfache) Variante geben.
Du müsstest in das Verzeichnis (wenn da noch 5 Unterverzeichnisse mit Dateien sind.... ), die alle extra löschen (Erase + RmDir) - das ist eine endlose Schreiberei. Da würde ich dir aber schon den Code von Frank oder den von mir geschickten empfehlen.

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)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 09.08.2009, 17:44   #6 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Ok, vielen Dank. Dann nehme ich doch ein verstummtes SHFileOperation.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 09.08.2009, 21:17   #7 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

IFs File Inc und Unit hat fDeltree und geht schon immer!
  Mit Zitat antworten
Alt 09.08.2009, 21:23   #8 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

HPGL Viewer (alpha)
  Mit Zitat antworten
Alt 09.08.2009, 21:27   #9 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

Hier wirds auch mal benutzt sagt google http://quelltext.xprofan.com/src/11974126759144.txt aber ist schon ein alter Quelltext.
  Mit Zitat antworten
Alt 09.08.2009, 22:22   #10 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Zitat:
IFs File Inc und Unit hat fDeltree und geht schon immer!
Hält ihn ja niemand ab sie zu posten, oder?
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 09.08.2009, 22:56   #11 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

HPGL Viewer (alpha)
  Mit Zitat antworten
Alt 09.08.2009, 23:01   #12 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

Da hab ich die gefunden!
  Mit Zitat antworten
Alt 10.08.2009, 07:09   #13 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Standard

Zitat:
Zitat von Unregistriert Beitrag anzeigen
IFs File Inc und Unit hat fDeltree und geht schon immer!
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)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Alt 10.08.2009, 20:15   #14 (Direktlink)
iF_
Weiß worum´s geht
 
Benutzerbild von iF_
 
Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
Standard

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
Ich würde aber einfachheitshalber die (mittlerweile alte) Unit nutzen, einfach herunterladen von http://xprofan.com/thread.core?t=789 .
__________________
Programmieren für Anfänger.
iF_ ist offline   Mit Zitat antworten
Alt 10.08.2009, 21:11   #15 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Wow, ich hatte mehr an ein verschachteltes FindFirst/FindNext gedacht.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
umbenennen von unterordnern? faQ Software - Allgemein 4 21.03.2005 15:34



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:01 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2