| |
|
|
Uwe ''Pascal'' Niemeier | Hi Leute!
Hier zwei Minimal-Beispiele (ohne Fehlerabfrage), wie man mithilfe der ocx3a-Routinen die Windows-internen Zip-Funktionen nutzen kann.
Datei oder Ordner packen: KompilierenMarkierenSeparierenwindow 200,200
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
var Quelle$="C:2Test"---existierende Datei oder Ordner
var Ziel$="C:Test.zip"--anzulegende Datei
declare a#:dim a#,24:clear a#
byte a#,0=80,75,5,6
blockwrite Ziel$,a#,0,24--leere Zip-Datei erzeugen
dispose a#
ocxInit()
var Shell&=ocxCreate("Shell.Application")
var Ziel&=ocxMethod(Shell&,"NameSpace",Ziel$)--ZIP wird von Windows wie Ordner behandelt
ocxMethod(Ziel&,"CopyHere",Quelle$)------------Quelle nach Pseudo-"Ordner" kopieren
set("ErrorLevel",0)---Komprimieren arbeitet asynchron, darum Statusabfrage nötig
while 1
sleep 50
case filesize(Ziel$)>-1:break--Datei "fertig", sonst Größe = -1
print Time$(1)
endwhile
set("ErrorLevel",1)
ocxRelease(Ziel&,Shell&)
print "Fertig"
ocxDeInit()
waitkey
ZIP-Datei entpacken: KompilierenMarkierenSeparierenwindow 200,200
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
var Quelle$="C:Test.zip"--existierende zip-Datei
var Ziel$="C:1Test"-------existierender Zielordner
ocxInit()
var Shell&=ocxCreate("Shell.Application")
var Ziel&=ocxMethod(Shell&,"NameSpace",Ziel$)
var Quelle&=ocxMethod(Shell&,"NameSpace",Quelle$)
var Items&=ocxMethod(Quelle&,"Items")
ocxMethod(Ziel&,"CopyHere",Items&)
--Entpacken arbeitet synchron, darum keine Statusabfrage nötig (??)
print "Fertig"
ocxRelease(Items&,Ziel&,Quelle&,Shell&)
ocxDeInit()
waitkey
Die Codes verhalten sich genauso wie die Windows-Originale, d.h. bei großen Dateien erscheint eine Fortschrittsanzeige und beim Entpacken wird gegebenenfalls gefragt, ob existierende Dateien überschrieben werden sollen.
PS: Wenn die ocx-Routinen direkt nach Aufruf der Funktionen De-Initialisiert werden (wie in diesen Demos), kann man sich den Aufruf von ocxRelease() sparen, weil noch offene ocx-Objekte durch ocxDeInit() automatisch freigegeben werden.
SeeYou Pascal |
|
|
| |
|
|
|
Dieter Zornow | Super gemacht, hast du auch mal versucht eine Zipdatei mit Passwort zu entpacken, wird da automatisch nachgefragt oder unterstützt die Windowsroutine das nicht. |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 27.12.2009 ▲ |
|
|
|
|
Sato Pinto | Hallo
Bei mir brich beim unpacken das programm ab
Gruss Sato |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hi Leute!
@ Dieter: Beim Entpacken wird in der Tat bei Bedarf nach einem Passwort gefragt; beim Packen nicht, weil Windows dies eben nicht selbst unterstützt.
@ Sato: Keine Fehlermeldung? Versuch mal per $D rauszukriegen, wos klemmt und laß dir die Inhalte der verwendeten Variablen anzeigen.
SeeYou Pascal |
|
|
| |
|
|
|
Sato Pinto | Hallo Pascal
Laut $D die Zeile verursacht den Programabruch ocxMethod(Ziel&,"CopyHere",Items&)
Gruss Sato |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hi Sato!
Wenn Ziel& und Items& nicht Null sind, sollte es klappen Ansonsten könntest du vor und/oder nach "CopyHere" mal ein Sleep 200 oder so einsetzen. Könnte ein Timing-Problem sein.
@ All: Hat sonst noch jemand Probleme mit diesen Funktionen?
SeeYou Pascal |
|
|
| |
|
|
|
| Ich freue mich erst drauf, richtig angucken kann ich erst bisl später. |
|
|
| |
|
|
|
Sato Pinto | Hallo
Mit die Sleep Befehle funktioniert prima, Danke
Gruss Sato |
|
|
| |
|
|