AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi SevenZip in den Arbeitsspeicher entpacken
Thema durchsuchen
Ansicht
Themen-Optionen

SevenZip in den Arbeitsspeicher entpacken

Ein Thema von Florian Hämmerle · begonnen am 2. Dez 2010 · letzter Beitrag vom 2. Dez 2010
Antwort Antwort
Florian Hämmerle
(Gast)

n/a Beiträge
 
#1

SevenZip in den Arbeitsspeicher entpacken

  Alt 2. Dez 2010, 16:53
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
  Mit Zitat antworten Zitat
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#2

AW: SevenZip in den Arbeitsspeicher entpacken

  Alt 2. Dez 2010, 18:07
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...
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#3

AW: SevenZip in den Arbeitsspeicher entpacken

  Alt 2. Dez 2010, 18:39
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: SevenZip in den Arbeitsspeicher entpacken

  Alt 2. Dez 2010, 18:39
Schau mal, ob die Dll auch Streams unterstützt
Markus Kinzler
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#5

AW: SevenZip in den Arbeitsspeicher entpacken

  Alt 2. Dez 2010, 18:43
Schau mal, ob die Dll auch Streams unterstützt
Ist möglich, danke für den Tipp

mfg Florian
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: SevenZip in den Arbeitsspeicher entpacken

  Alt 2. Dez 2010, 18:45
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 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