Einzelnen Beitrag anzeigen

Jim Carrey
(Gast)

n/a Beiträge
 
#1

ZIP-Forge Datei zippen im MemoryStream (geöffnete Dateien)

  Alt 10. Okt 2016, 23:26
Ich benutze seit Neuestem privat ZIP-Forge zum Zippen von Dateien in meinem Projekt.

Da das normale Zippen zulange dauerte habe ich auf das Zippen direkt im Speicher über einen TMemoryStream umgestellt.
Jetzt ist mir aufgefallen, dass normal geöffnete Dateien ohne besondere Schutz-Rechte nicht in den Speicher geschrieben werden können.

Genauer gesagt ist Datei Projekt.exe in Verzeichnis ABC offen und ich zippe mit Projekt.exe das Verzeichnis ABC.
Projekt.exe kann jetzt nicht gezippt werden.

Gibt es hier einen Schalter den ich einstellen kann, dass die Datei nur im Lese-Modus geöffnet wird und nicht auch im Schreibmodus?

So sieht das Originalbeispiel aus und so verwende ich es auch
Delphi-Quellcode:
var
  Archiver: TZipForge;
  ms: TMemoryStream;
begin
  // create ZipForge object
  Archiver := TZipForge.Create(nil);
  // create memory stream
  ms := TMemoryStream.Create;
  try
    // create a new archive in the memory stream (specify False to open an existing archive)
    Archiver.OpenArchive(ms, True);
    // save a file into the archive
    Archiver.AddFiles('c:\file.txt');
    // close archive
    Archiver.CloseArchive();
  except
     on E: Exception do
     begin
       Writeln('Error: ' + E.Message);
     end;
  end;
  ms.Free;
  Archiver.Free;
end.
Ohne Memorystream ist alles OK und auch normal geöffnete Dateien können gezippt werden.

Geändert von Jim Carrey (10. Okt 2016 um 23:34 Uhr)
  Mit Zitat antworten Zitat