Einsteigerfragen zur PROFAN Programmierung
  Suchen
 Zurück zur Übersicht
 AutorThema: Ordner mit Inhalt Löschen
Florian May
Datum:10.07.02 18:13 Antwortenals Email verschicken  


Ist es möglich, ein Ornder, der Dateien enthält zu löschen?

ich weiss das nur leere Ordner gelöscht werden können, aber ist es irgendwie möglich?


Sebastian Sprenger
Datum:10.07.02 21:04 Antwortenals Email verschicken (prof.chaos@netcologne.de) 


Hallo Florian,
es gibt zwei Möglichkeiten:

1. Im Verzeichnis C:\WINDOWS\COMMAND\ findet man ein DOS-Programm namens DELTREE.EXE.
Aufrufen kann man es so:

winexec($winpath+"\COMMAND\DELTREE.EXE /Y D:\MUELL\",0)
2. alle Dateinamen in eine ListBox (AddFiles*) schreiben und die Dateien dann löschen.
Sebastian


Mischa Brandt
Datum:10.07.02 21:40 Antwortenals Email verschicken (mischabrandt@gmx.de) 


Ähm..zumindest
3 Möglichkeiten? ;-)

'SHFileOperation' (siehe API-Referenz)
Falls Du einen Quelltext zur veranschaulichung brauchst..
..kann ich Dir einen schicken.

Gruß,
Mischa


carlo keil
Datum:10.07.02 22:33 Antwortenals Email verschicken (carlo.keil@web.de) 


Hallo Mischa,

wie wär´s mit posten statt mailen?
Dann hätten alle was davon (ich natürlich auch).

Danke
Carlo



Mischa
Datum:11.07.02 09:14 Antwortenals Email verschicken  


Hallo!

Ich hoffe es ist in Ordnung den Quellcode zu posten,
ist ja schließlich nicht von mir. :-)
Sonst bitte beschweren, Thomas, dann tue ich es nicht
wieder..

' PRFellow- Vorlage
' Autor: Thomas Hölzer
' Löscht einen Ordner mit Unterordnern
' Funktioniert auch mit einer oder mehreren Datei(en)
' Vorsicht bitte und darauf achten, daß kein Ordner C:\BlaBla20 besteht!!

Def SHFileOperation(1) !"SHELL32","SHFileOperationA"
Declare opstruct#,dir#

Proc Delete32
' Löscht im Parameter (1) angegebenen Ordner samt Unterordnern (oder Datei)
' Parameter 2: 0 = User erst fragen, 1= ohne Nachfrage löschen
' Parameter 3: 0 = In Papierkorb verschieben, 1= "endgültig" löschen
Parameters dir$,noconfirm%,norecycle%
Declare FOF_Flag%
Case noconfirm%: Let noconfirm%=16
CaseNot norecycle%: Let norecycle%=64
Let FOF_Flag% = Or(noconfirm%,norecycle%)
Dim opstruct#,30
Dim dir#,Add(Len(dir$),2)
' Platz für 2(!) Null-Bytes lassen

String dir#,0=Add$(dir$,Chr$(0))
' Das Nullbyte MUSS hier angehängt werden,
' weil die Funktion am Ende 2 Null-Bytes erwartet
' Das hängt damit zusammen, daß mehrere Dateien/Ordner
' hintereinander in einem String übergeben werden können,
' die dann jeweils durch 1 einzelnes Null-Byte getrennt werden.
' Eine gute Alternative: Den ganzen "Bereich" dir#
' vorab mit Null-Bytes auffüllen.

Long opstruct#,0=%hwnd ' Handle des aufrufenden Fensters
Long opstruct#,4=3 ' FO_Delete
Long opstruct#,8=dir# ' pfrom : hier der zu löschende Ordner
Long opstruct#,12=0 ' 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
IF Gt(ShFileOperation(opstruct#),0)
MessageBox("Es ist ein Fehler aufgetreten","ShFileOperation",16)
EndIf

Dispose dir#
Dispose opstruct#
EndProc

' Beispiele
''Cls
''MkDir "C:\BlaBla20"
''MkDir "C:\BlaBla20\MehrBlaBla"
''Delete32 "C:\BlaBla20\MehrBlaBla",0,0 ' Fragen und in Papierkorb verschieben
''
''' Beispiel, wie man 2 Dateien (durch 0-Byte getrennt löschen kann)
''' Declare files$
''' Let files$="C:\BLABLA1.TXT";Chr$(0);"C:\BLABLA2.TXT"
''' DelTree32 files$,0,0

Gruß,
Mischa



Roland G. Hülsmann
Datum:11.07.02 11:24 Antwortenals Email verschicken (rgh-soft@t-online.de) 


Hallo Mischa,

gemäß der beiliegenden Lizenzbestimmungen ist es generell untersagt, PRFellow-Vorlagen als Qelltext weiterzugeben. Es wäre also besser gewesen, lediglich den Namen der Vorlage und den Hinweis, daß sie aus PRFellow stammt zu posten. Das reicht dem Hilfesuchenden!

BTW: Und für weitere Fragen zu PRFellow gibt es mittlerweise auf der Seite von Bernd Haase einen eigenen Bereich mit Downloads und Forum: http://www.ebs-haase.de/

Gruß
Roland




Mischa Brandt
Datum:11.07.02 19:57 Antwortenals Email verschicken (mischabrandt@gmx.de) 


Danke für den Hinweis, Roland, habs ja nur gut
gemeint. :-( Mir ist nicht die Macht gegeben den
Eintrag zu entfernen..Also bitte entferne Du ihn,
bevor ich noch verklagt werde. :-(

(Trotzdem finde ich Thomas Vorlagen sehr lehrreich, also
kann ich auch nur wärmstens empfehlen bei Bernd
Haase vorbeizuschauen)

mit sowieso schon müden Grüßen
(nach 20 Stunden Programmier-Marathon)
Mischa



Rolf Koch
Datum:10.07.02 23:54 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Hi,
@Sebastian
Das mit dem C:\WINDOWS\COMMAND\ ist ein bisschen gefährlich, da es z.B. unter XP kein Commandordner gibt.
Und auch die Datei Deltree.exe suche ich vergebens ;)
Rolf


Dr. Mabuse
Datum:11.07.02 20:22 Antwortenals Email verschicken  


Was soll so ein Blödsinn? Man kann keine API's schützen, die stammen von Microsoft. Oder wird man dann verklagt? Man man man ...


Florian May
Datum:11.07.02 21:11 Antwortenals Email verschicken  


aber verboten diese zu verwenden ist es doch nicht oder ?


Mischa
Datum: 11.07.02 21:22 Antwortenals Email verschicken  


Danke Dr.M. :-)

Aber Roand hat Recht, ich habe mir die Lizenzbestimmung von
PrFellow noch mal durchgelesen. (Das hätte ich vorher mal gründlicher tuen sollen..seufz) In dieser wird ausdrücklich
untersagt die 'Quelltexte' in DIESER Form zu veröffentlichen,
weiterzugeben,etc. Ich war in dem Glauben, daß sie NUR in
dieser Form zu belassen sein sollten. (Keine Änderungen, usw)
Es geht dabei ja nicht um die API_Aufrufe, Funktionen, sondern
vielmehr um die Hinweise, Beschreibung, Kommentare, Übersetzungen, und die sind in DIESER Form geistiges Eigentum von Thomas!
Und gerade in der Schwierigkeit für Anfänger, API-Funktionen
in Profan ordnungsgemäß zu übersetzen und einzusetzen, liegt ja die wahre 'Dienstleistung' von Thomas Vorlagen. Letztendlich bin ich mittlerweile dazu in der Lage, so einige API_Aufrufe selbst umzusetzen (durch und mit der API-Referenz, usw), aber nichtzuletzt eben diese Quelltext-Vorlagen haben mein Verständnis hierfür stark gefördert. Auch die hier thematisierte Funktion habe ich in abgewandelter Form mittlerweile in ZWEI Sprachen unlängst umgesetzt, aber eben
DIESE Vorlage hat es mir erleichtert, und ich wollte mich nicht mit fremden Lorbeeren bekleiden, daher habe ich mir gedacht eben DIESEN Quelltext zu nehmen, der ja schon meine Vorlage gewesen ist und weil er so gut dokumentiert ist, das dem nichts mehr hinzuzufügen ist. Das haben Thomas (und auch andere) mit sicherlich viel Mühe gemacht, denn es gibt ja 'ne Menge Vorlagen. Und eben DIES ist die 'Dienstleistung' und damit das geistige 'Eigentum' eines Thomas Hölzer!
Das der spitzen 'Lizenzbestimmmung' auch sicherlich ein anderer Konflikt zu Grunde liegt, ist bekannt und muß nicht nochmal thematisiert werden. Eine Lizenzbestimmung ist nun mal eine Lizenzbestimmung, das liegt ganz in der Entscheidung des Urhebers!
Wenn ich das nächste mal hier jemandem helfen möchte, werde ich das mit einer eigenen Vorlage tuen, die zwar dann sicherlich auf den API_Funktionen aufbaut, die auch ANDERE verwandt haben, aber von MIR dokumentiert sein wird. Dann dauert es halt etwas länger, aber ich verstoße nicht gegen ein 'Copyright'. Ich kann nur wiederholen: Ich habs gut gemeint und wollte nicht den Dank, der einem anderen gebührt.

Mit schuldbewußten und sehr müden Grüßen,
(nach ca 21 Stunden ProgMarathon mit kurzer Schreib/Esspause)
Mischa




 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
Shortwin - denn Glück ist kein Zufall!