![]() |
Anzeige:
|
|
|||||||
| Helfer & Tools Programme für und in XProfan und Fragen dazu. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#31 (Direktlink) | |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Zitat:
Pseudocode: Code:
j = ZIP_GetFilesCount()
For i = 1 to j
Name = ZIP_GetFileInfo()
If Dir in Name
ZIP_ExtractFile()
EndIf
Next
Thomas |
|
|
|
|
|
|
#32 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Damit kann ich auch einzelne Verzeichnisse aus dem Namen löschen?
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#33 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Der relative Pfad ist doch im Namen enthalten. Den überprüfst Du, ob das nicht zu entpackende Verzeichnis enthalten ist und lässt es dann beim entpacken aus. ExtractFile entpackt doch nur einzelne Dateien. ExtractArchiv entpackt immer alles, da kann man nichts beeinflussen.
Dateinamen in einem ZipArchiv werden immer mit einem relativen Pfad gespeichert, es gibt dort keine Ordner. Deshalb kann man auch keine leeren Ordner entpacken. Verzeichnis/bla.bmp Verzeichnis/weiteresVerzeichnis/blub.bmp root.bmp Gruß Thomas //edit: Code:
$I minizip.inc
Declare hMinizip&, sZIP$, iCount&, bFile#, sFile$
Dim bFile#, 260
hMinizip& = UseDLL("minizip.dll")
sZIP$ = @LoadFile$("Wähle ZipArchiv", "*.zip")
iCount& = ZIP_GetFilesCount(Addr(sZIP$))
WhileLoop 1, iCount&
bFile# = ZIP_GetFileInfo(Addr(sZIP$), &Loop, 0)
sFile$ = String$(bFile#, 0)
' Hier vergleichen und ggflls. entpacken
Print sFile$
EndWhile
Dispose bFile#
FreeDLL hMinizip&
WaitInput
Geändert von ts-soft (25.09.2010 um 16:28 Uhr) |
|
|
|
|
|
#34 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Achso, jetzt verstehe ich. Danke.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#35 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Puuh, naja, ich bin eben kein Erklärer
Und Beispiele in XProfan erfordern immer fleißiges Hilfe studieren, wo ich zu Faul zu bin. Die Sache mit den Unterstrukturen hab ich jetzt auch rausgefunden. Man läßt die Angabe der Unterstruktur einfach weg, gibt stattdessen dessen Member an. Allerdings komme ich noch nicht an den Member: FileName$(260) Aber der wird von der Funktion ja sowieso direkt zurückgegeben, somit sind alle Werte erreichbar, falls mal benötigt. Gruß Thomas |
|
|
|
|
|
|
#36 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Hallo Thomas,
Also bei mir kommt es immer zu einem schweren Absturz,wenn ich Zipfiles mit Verzeichnissen entpacken will. Vielleicht bracht man dazu mehr Speicher, mein Notebook hat nicht viel Speicher. Hast du das entpacken von Verzeichnissen schon getestet ? Ich benutze folgende Form ZIP_ExtractArchiv(addr(zipfile$),addr(outpath$),1,0) desweiteren gibt diese Funktion bei mir bei einem Archiv mit nur einem File darin true zurück, bei mehreren Files aber false, obwohl einwandfrei entpackt wird. Die Funktion ZIP_DirAdd() funktioniert, aber außerhalb der Norm, Wenn ich ein Verzeichinss packe wird es ins Rootverzeichnis des des zipfiles gepackt, das heißt das Verzeichnis selbst erscheint nicht im Zipfile. Wenn ich mit einem Zipprogramm packe erscheint das Verzeichnis im Zipfile. Wenn ich dann 2 Verzeichnisse in eine Datei packe, werden die dadurch untrennbar vermischt. Hoffe du weißt was ich meine. Die Parameter von ZIP_UnpackMemory() sind mir nicht klar, da nicht erklärt.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#37 (Direktlink) | ||||
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Zitat:
Zitat:
1. Wenn ich selber Beispiele bastel, funktionieren die Erfahrungsgemäß 2. Es werden nicht alle Zip-Archive unterstützt, nur PKZIP 2 kompatible. Wenn Winzip und Konsorten irgendwelche ungenormten Erweiterungen nutzen, werden diese nur sehr eingeschränkt unterstützt, da es keine Informationen zu diesen Erweiterungen gibt. 3. Ich habe Freitag Prüfung und nur eingeschränkt Zeit. Zitat:
Packprogramm ersetzen, sondern Programmieren dienlich sein Bei Deiner Variante könnte ich nicht mit nur einem Packbefehl ein komplettes Archiv erstellen, das auch Dateien im Root enthält. Erstell einfach einen Ordner oberhalb, dann hast Du das gewünschte Resultat. Zitat:
weißt das dieses * für einen Pointer steht. *source ist also der Bereich, wo das gepackte etwas enthalten ist *dest ist der Bereich wo das ungepackte etwas hinein soll Die meisten denken bei ZIP immer nur an das Archivfileformat, aber in erster Linie ist es ein Packformat. Es ist nicht zwingend erforderlich, das dort ein Container mit Headern mit Informationen wie Dateiname, Verzeichnis, Attribute usw. existiert. Angenommen Du verwaltest die Einstellungen Deines Programmes in einem strukturierten Bereich, so könntest Du beim Programmende diesen Bereich speichern. Wenn dieser aber sehr gross ist, könntest Du diesen Bereich auch erstmal in einen anderen Bereich packen und diesen gepackten speichern. Hierbei aber nicht vergessen, die orginalgrösse mitzuspeichern, sowie einen Check auf korruption, z.B. CRC32 oder MD5Fingerprint wäre sinnvoll um "Illeagal Memory Access" zu vermeiden. Die Rohdaten aus einer Listview könntest Du so z.B. gepackt speichern. Kurzfassung: Für ZipArchive ist der Befehl nutzlos. Gruß Thomas |
||||
|
|
|
|
|
#38 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Hallo Thomas,
das mit dem * wusste ich nicht Zum entpacken, ich habe einfach den Inhalt deines Zipfiles minizip_dll.zip entpackt in ein Verzeichnis kopiert und mit ZIP_DirAdd() gepackt und dann versucht zu entpacken, da ist ja das Unterverzeichnis Source drin. Also kein fremdes Programm verwendet, so dass Formatunterschiede keine Rolle spielen Einfaches beispiel zum entpacken. Code:
$I minizip.inc
var zip& = usedll("minizip.dll")
cls
var file$ = loadfile$("Archiv öffnen","*.ZIP")
var path$ = Choosedir$("Verzeichnis zum entpacken wählen")
print ZIP_ExtractArchiv(addr(file$),addr(path$),1,0)
freedll zip&
waitinput
Ich packe das Verzeichnis "C:\Temp" und das Verzeichnis "C:\Test" in eine Datei. Die beiden Verzeichnisse werden nun in dem Zipfile vermischt. Beim entpacken werden nun gleichnamige Dateien sogar überschrieben, weil die Pfadangabe dann fehlt. Wenn z.B. in beiden Verzeichnissen eine Readme.txt ist bleiben die zwar im Zipfile erhalten. Aber beim entpacken wird eine dann überschrieben.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#39 (Direktlink) | |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Zitat:
Das andere werde ich mir die Tage mal anschauen. Gruß Thomas |
|
|
|
|
|
|
#40 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Na ja, das ist aber kein work around, da eine Packdll ja nicht für den Eigengebrauch ist, sondern um seine Programme bei Bedarf mit Zip-Funktionen auszustatten. Das heißt ein User bedient dann das Programm und der dürfte für den Umweg kein Verständnis haben, da er es von Zipprogrammen besser kennt.
Ich muss dann wohl eine Routine entwerfen um die Verzeichnisse einzuladen in der Form: Code:
ZIP_FileAdd(ZipHandle&, "c:\ordner\", "ordner", 9, 0) ZIP_FileAdd(ZipHandle&, "c:\ordner\earth.bmp","ordner\earth.bmp",9,0)
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
|
#41 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Den Fehler mit ZIP_ExtractArchive() konnte ich jetzt nachvollziehen. Passiert
sobald Unterverzeichnisse im Archiv sind. Wird aber noch ein bissel dauern bis ich den Fehler beseitigen kann, mir fehlt erstmal die Zeit Gruß Thomas |
|
|
|
|
|
#42 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Ansonsten funktioniert die Dll in meinem Malware Whisperer völlig anstandslos. Bin sehr zufrieden damit!
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#43 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Hab den Download mal aktualisiert, hatte einen Bugfix für Frank eingebaut,
aber vergessen upzuloaden.
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
#44 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#45 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Hilfe, ich habe ein Problem mit dem Zeichensatz. Wie erhalte ich ä,ü,ö, usw. ?
Gruß Thomas |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|