Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SevenZip in den Arbeitsspeicher entpacken (https://www.delphipraxis.net/156459-sevenzip-den-arbeitsspeicher-entpacken.html)

Florian Hämmerle 2. Dez 2010 15:53

SevenZip in den Arbeitsspeicher entpacken
 
Hallo,

ich hab mehrere Dateien (XML, PNG, TXT), die zu einem Projekt gehören in einer mittels SevenZip archivierten Datei. Diese sollen durch mein Programm auch wieder geladen werden können, dabei aber dann nicht "frei herumliegen", sondern, wenn möglich nur im Arbeitsspeicher sein.

Geht das irgendwie? Hat das schon mal jemand gemacht?

mfg Florian

ele 2. Dez 2010 17:07

AW: SevenZip in den Arbeitsspeicher entpacken
 
Soweit ich weiss gibt es da keine einfache Möglichkeit, zumindest nicht für Delphi und 7z-Dateien. Für Zip-Dateie könntest du fündig werden, aber ich kenne da keine Zip-Komponente die das entpacken in z.B. MemoryStreams ermöglichen würde (Abbrevia kann das z.B nicht).

Ich persönlich lege diese Dateien im Temp-Verzeichnis ab und lösche sie beim Programm-Ende wieder. Wenn das Programm allerdings abstürzt oder mittels Task-Manager abgeschossen wird bleiben sie aber liegen.

Wie benutzt du 7zip in Delphi? Kommandozeile oder Dll?

Dabei fällt mir ein: Theoretisch kannst du über die Konsolen-Version (7z.exe) mit dem Switch -so die Dateien nach StdOut entpacken. Du musst nur die Ausgabe umleiten, damit du die Daten dann im Arbeitsspeicher vorfindest. Das Umleiten des Standart Outputs für ein Konsolenprogramm ist zwar nicht trivial, aber machbar. Ich habe entsprechende Komponenten schon geschrieben...

Florian Hämmerle 2. Dez 2010 17:39

AW: SevenZip in den Arbeitsspeicher entpacken
 
SevenZip wird über die DLL bedient. Mein Programm packt die nötigen Dateien in ein Archiv und soll sie bei einem späteren Start des Programms aus dieser Datei laden können. Wenn ich bis morgen in der Früh keine andere Möglichkeit finde, werde ich sie wohl ins Temp-Verzeichnis entpacken. Ist ja auch nicht so schlimm, aber ich möchte eben nicht, dass der Anwender sofort alle Dateien zu sehen bekommt (wenn er an sie ran will, muss er ja nur das Archiv mit zb 7zip.exe, entpacken).

mfg Florian

mkinzler 2. Dez 2010 17:39

AW: SevenZip in den Arbeitsspeicher entpacken
 
Schau mal, ob die Dll auch Streams unterstützt

Florian Hämmerle 2. Dez 2010 17:43

AW: SevenZip in den Arbeitsspeicher entpacken
 
Zitat:

Zitat von mkinzler (Beitrag 1065715)
Schau mal, ob die Dll auch Streams unterstützt

Ist möglich, danke für den Tipp :)

mfg Florian

Lemmy 2. Dez 2010 17:45

AW: SevenZip in den Arbeitsspeicher entpacken
 
Hi,

als Zipkomponente macht das KZip (aber nicht für neue Delphiversionen nach 2009 verfügbar) oder ZipForge. Für 7z habe ich ncoh nichts vergleichbares gefunden.

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz