Das funktioniert jetzt soweit sehr gut.
Auch wenn es umständlich ist.
Delphi-Quellcode:
aMemoryStream := TMemoryStream.Create;
ZipForge1.OpenArchive(aMemoryStream, True);
aFileStream := TFileStream.Create(aCurrItem.sSourceDirItem, fmOpenRead);
try
ZipForge1.AddFromStream(StringReplace(aFileName, ZipForge1.BaseDir, ''), aFileStream);
finally
aFileStream.Free;
end;
ZipForge1.CloseArchive;
aMemoryStream.SaveToFile(ZipForge1.FileName);
Einzige unschöne Nebenwirkung ist, dass wenn man große Dateien zippen möchte man die Meldung bekommt "Zu wenig Arbeitsspeicher".
Aber das ist wohl der bittere Nebengeschmack denke ich. Ab circa 500MB im Taskmanager bekomme zumindest ich die Meldung.
Dann werde ich wohl jetzt eine Art Kreuzung einbauen die bei Verzeichnissen, sagen wir mal, bis zu Größe-X mit dem FileStream zippt und sonst normal.