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...