7-zip32.dll wrapper
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
7-zip32.dll wrapper
Damit ich es nicht 2x posten muß, findet ihr im engl. Forum:
http://www.purebasic.fr/english/viewtopic.php?t=26429
http://www.purebasic.fr/english/viewtopic.php?t=26429
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Das sieht ja recht interessant aus. Vorallem da ich mit dem gedanken spiele
7z-Support in PFM einzubinden. Hab dazu mal ein paar fragen.:
1) Wie Extractet man denn nun Files aus dem Archiv ? Bei den Funktionsnamen
scheint kein Name dabei zu sein der darauf schliessen lässt etwas entpacken zu können.
2) Wo kann man eigentlich eine aktuelle version der Dll downloaden ?
Ich meine es ist ja nicht die selbe wie die die im Original-7Zip enthalten ist.
Da ich das ganze gerne auch ohne pbi machen würde, habe ich mir mal folgendes zusammengebastelt.:
Das klappt soweit auch zu meiner zufriedenheit. Allerdings ist mir aufgefallen
das keine Leeren Ordner angezeigt werden. Gibts da ne möglichkeit diesen
umstand zu korrigieren ?
7z-Support in PFM einzubinden. Hab dazu mal ein paar fragen.:
1) Wie Extractet man denn nun Files aus dem Archiv ? Bei den Funktionsnamen
scheint kein Name dabei zu sein der darauf schliessen lässt etwas entpacken zu können.
2) Wo kann man eigentlich eine aktuelle version der Dll downloaden ?
Ich meine es ist ja nicht die selbe wie die die im Original-7Zip enthalten ist.
Da ich das ganze gerne auch ohne pbi machen würde, habe ich mir mal folgendes zusammengebastelt.:
Code: Alles auswählen
#ARCEXTRACT_BEGIN = 0
#ARCEXTRACT_INPROCESS = 1
#ARCEXTRACT_END = 2
#ARCEXTRACT_OPEN = 3
#ARCEXTRACT_COPY = 4
Structure SEVENZIPINFO
dwOriginalSize.l
dwCompressedSize.l
dwCRC.l
uFlag.l
uOSType.l
wRatio.w
wDate.w
wTime.w
szFileName.c[#MAX_PATH]
dummy1.c[3]
szAttribute.c[8]
szMode.c[8]
EndStructure
Define.SEVENZIPINFO SEVENINFO
ArcName$="C:\test.7z"
DLL$="c:\7-zip32.dll"
If OpenLibrary(0, DLL$)
*SevenZipOpenArchive.l = GetFunction(0, "SevenZipOpenArchive")
*SevenZipCloseArchive.l = GetFunction(0, "SevenZipCloseArchive")
*SevenZipFindFirst.l = GetFunction(0, "SevenZipFindFirst")
*SevenZipFindNext.l = GetFunction(0, "SevenZipFindNext")
hARC.l = CallFunctionFast(*SevenZipOpenArchive, 0, ArcName$, #ARCEXTRACT_OPEN)
If hARC
If Not CallFunctionFast(*SevenZipFindFirst, hARC, "", @SEVENINFO)
name$ = PeekS(@SEVENINFO\szFileName)
len.q = SEVENINFO\dwOriginalSize
Debug name$+" "+Str(len)
While Not CallFunctionFast(*SevenZipFindNext, hARC, @SEVENINFO)
name$ = PeekS(@SEVENINFO\szFileName)
len.q = SEVENINFO\dwOriginalSize
Debug name$+" "+Str(len)
Wend
EndIf
CallFunctionFast(*SevenZipCloseArchive, hARC)
EndIf
CloseLibrary(0)
EndIf
das keine Leeren Ordner angezeigt werden. Gibts da ne möglichkeit diesen
umstand zu korrigieren ?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Mit der Funktion SevenZip, siehe das zweite Beispiel im Thread, entpackenal90 hat geschrieben:Das sieht ja recht interessant aus. Vorallem da ich mit dem gedanken spiele
7z-Support in PFM einzubinden. Hab dazu mal ein paar fragen.:
1) Wie Extractet man denn nun Files aus dem Archiv ? Bei den Funktionsnamen
scheint kein Name dabei zu sein der darauf schliessen lässt etwas entpacken zu können.
ist e oder x als erster parameter.
Es ist aber die aktuelle Version, nur von 7-zip gibst noch eine beta.al90 hat geschrieben: 2) Wo kann man eigentlich eine aktuelle version der Dll downloaden ?
Ich meine es ist ja nicht die selbe wie die die im Original-7Zip enthalten ist.
Downloaden siehe den link zur dt. Anleitung, in Japan, den richtigen Krakel
anklicken und los gehts

Keine Ahnung, lese die engl. Anleitung, oder besser die japanische, dieal90 hat geschrieben: Da ich das ganze gerne auch ohne pbi machen würde, habe ich mir mal folgendes zusammengebastelt.:
Das klappt soweit auch zu meiner zufriedenheit. Allerdings ist mir aufgefallenCode: Alles auswählen
umständlicher code der nicht die statische lib nutzt
das keine Leeren Ordner angezeigt werden. Gibts da ne möglichkeit diesen
umstand zu korrigieren ?
ist aktueller

Mit der Funktion SevenZip kannste alles machen, was man mit der
Consolenversion per Kommandozeile machen kann, die Syntax ist
ähnlich, kannste also der 7-zip Hilfe entnehmen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Mach mich nicht schwach. Wie hast du das blos gefunden ?ts-soft hat geschrieben: [...]in Japan, den richtigen Krakel
anklicken und los gehts![]()

Na Gott sei Dank.Im moment ja nicht nötig

Naja was man oftmals alles so als umständlich bezeichnet. Da ich öfters malCode: Alles auswählen
umständlicher code der nicht die statische lib nutzt
mein Windows & PB neu draufhaue, habe ich es ganz gerne wenn meine
Sourcen danach sofort wieder laufen.

Keine Ahnung, lese die engl. Anleitung, oder besser die japanische, die
ist aktueller![]()


Demnach isses also essig mit eigenem GUI wie es bspw. bei RAR möglich ist ? Ich meine so mit callback und allem drum und dran ?Mit der Funktion SevenZip kannste alles machen, was man mit der
Consolenversion per Kommandozeile machen kann, die Syntax ist
ähnlich, kannste also der 7-zip Hilfe entnehmen.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> Demnach isses also essig mit eigenem GUI wie es bspw. bei RAR möglich ist ? Ich meine so mit callback und allem drum und dran ?
Warum? Allerdings für SFX ist nur der Standard Stubs in der DLL.
Ansonsten zur anzeige kannste die schönen Funktionen nehmen, zum
eigentlichen Packen und entpacken mußte dir dann die passende
Commandozeile als String basteln und der SevenZip Funktion übergeben,
nur diese packt und entpackt, der Rest ist nur für Infos, also für deinen DM,
zur Anzeige.
Einzige Info die ich noch habe: Es funzt, aber ein falscher Parameter in der
Commandozeile (fehlender Space, oder #DQUOTE$) und es ist Essig
Callback geht wohl auch irgendwie, aber da er autom. ein Fortschrittfenster
anzeigt, ist das doch unnötig.
Warum? Allerdings für SFX ist nur der Standard Stubs in der DLL.
Ansonsten zur anzeige kannste die schönen Funktionen nehmen, zum
eigentlichen Packen und entpacken mußte dir dann die passende
Commandozeile als String basteln und der SevenZip Funktion übergeben,
nur diese packt und entpackt, der Rest ist nur für Infos, also für deinen DM,
zur Anzeige.
Einzige Info die ich noch habe: Es funzt, aber ein falscher Parameter in der
Commandozeile (fehlender Space, oder #DQUOTE$) und es ist Essig

Callback geht wohl auch irgendwie, aber da er autom. ein Fortschrittfenster
anzeigt, ist das doch unnötig.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Genau darin liegt eben das problem.ts-soft hat geschrieben: Callback geht wohl auch irgendwie, aber da er autom. ein Fortschrittfenster
anzeigt, ist das doch unnötig.

Ich benutze immer 2 ProgressBalken für alle Packer. (Wie du ja selbst weist momentan ZIP+RAR)
Das GUI ist also einheitlich während des Entpackens. Somit kann ich das
bisherige konzept nicht aufrecht erhalten. Schade eigentlich.

Naja ich werde mir das bei zeiten mal genauer ansehen. Jetzt steht erstmal die 1.6
mit CommandLine an.

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Der Prototyp fürs Callback ist ja bei, den Rest mußte austesten.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Das warten bringt nichts, die Dokumentation wird dadurch sicherlich nichtal90 hat geschrieben:Ich warte lieber bist du dich für's update wieder durch die japanischen seiten gequält hast.ts-soft hat geschrieben:Der Prototyp fürs Callback ist ja bei, den Rest mußte austesten.
besser, lediglich die engl. Übersetzung hinkt noch weiter hinterher.
Wie man das Callback einsetzt, die Funktionsparameter haben ja alle
aussagekräftige Bezeichner und die Typbezeichner sind auch bei, also auch
dort, wo der Callback-Prototyp als Pointer übergeben wird, mußte alles nur
noch testen und ein bissel logisch überlegen, wie das funzen könnte, ich
hab da im moment kein Bedarf, mir reicht das es theoretisch Funktionieren
müßte

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
