Müsste eigentlich schon das richtige sein.
Nun ist die frage wie mache ich das?!
Denn " procedure ExtractItem(const item: Cardinal; Stream: TStream; test: longbool); stdcall;" erfordert ja einen Stream.
Mein Ansatz
mal erweitert
Delphi-Quellcode:
var
i : Integer;
fs : TFileStream;
begin
with CreateInArchive(CLSID_CFormatZip) do
begin
openfile(openpfad);
for i := 0 to dateilist.Items.Count - 1 do begin
if dateilist.Items[i].Selected then
begin
// !! ACHTUNG !!
// Den Dateinamen + Verzeichnis aus dem Archiv auslesen
// Im Archiv sollten sich die relativen Pfade befinden
// oder sogar in dateilist.items ???
fs := TFileStream.Create( 'C:\irgendwo\irgendwas.dat', fmOpenCreate );
try
extractitem(i, fs ,true);
finally
fs.Free;
end;
end;
end;
EDIT: steht in
openpfad
nicht der Dateiname der zip-Datei?
Warum willst Du also in die Zip-Datei entpacken?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)