AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Datei zippen/ entzippen: TZipmaster oder Abbrevia
Thema durchsuchen
Ansicht
Themen-Optionen

Datei zippen/ entzippen: TZipmaster oder Abbrevia

Ein Thema von hoika · begonnen am 1. Jun 2016 · letzter Beitrag vom 3. Jun 2016
 
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 11:03
Hallo,
ich suche eine Möglichkeit, ein Zip-Archiv (normales zip, kein gzip oder 7zip)
zu entpacken und wieder ein Archiv zu erzeugen.

Das ganze möglichst direkt über Streams.

Im Moment nehme ich den Zipmaster.
Nachteil ist, dass ich halt keine Streams benutzen kann.
Es läuft immer auf Dateien aus.
Ich nehme auch immer den Zip-Master und das geht auch mit Streams.

Hier ein Auszug aus 'ner Klasse, mit der ich EPubs erstelle:
Delphi-Quellcode:
...

    // sEPubFilename ist der "Datei"-Name, unter dem der Stream im Zip-Archiv abgelegt wird.
    // Einen String, der eine vollständige Datei (HTML-Seite...) repäsentiert,
    // in die EPub-Datei übernehmen.
    function CopyToEPub(sInhalt : String; sEPubFilename : String) : Boolean; overload;
    // Inhalt einer Stringliste als Datei in die EPub-Datei übernehmen.
    function CopyToEPub(sl : TStrings; sEPubFilename : String) : Boolean; overload;
    // Einen Stream als Datei in die EPub-Datei übernehmen.
    // Hierbei kann es sich um alles handeln, was man in eine ZIP-Datei packen kann.
    function CopyToEPub(st : TMemoryStream; sEPubFilename : String) : Boolean; overload;
...


...
// Wir bekommen eine Zeichenfolge, die eine vollständige Seite enthält.
function TEPub.CopyToEPub(sInhalt : String; sEPubFilename : String) : Boolean;
var
         sl : TStringList;
         st : TMemoryStream;
begin
  sl := TStringList.Create;
  st := TMemoryStream.Create;
  try
    sl.Add(sInhalt);
    sl.SaveToStream(st);
    Result := CopyToEPub(st,sEPubFilename);
  finally
    st.Free;
    sl.Free;
  end;
end;

// Wir bekommen eine Stringliste, die eine vollständige Seite enthält.
function TEPub.CopyToEPub(sl : TStrings; sEPubFilename : String) : Boolean;
var
          st : TMemoryStream;
begin
  st := TMemoryStream.Create;
  try
    sl.SaveToStream(st);
    Result := CopyToEPub(st,sEPubFilename);
  finally
    st.Free;
  end;
end;

// Die Übernahme in das eBook kann nur per Stream erfolgen.
// Wir bekommen hier einen Stream, der eine vollständige Seite enthält.
// Es kann sich aber auch um Bilder... handeln, halt alles, was man in ein
// Zip packen kann.
function TEPub.CopyToEPub(st : TMemoryStream; sEPubFilename : String) : Boolean;
begin
  Result := false;
  if Assigned(fOnEPubMessage) then fOnEPubMessage(Self, Format('speichere %s...',[sEPubFileName]));
  Application.ProcessMessages;
  try
    try
      st.Position := 0;
      fZip.ZipStream.LoadFromStream(st);
      fZip.AddStreamToFile(sEPubFilename,0,FILE_ATTRIBUTE_ARCHIVE);
      st.Clear;
      Result := True;
      if Assigned(fOnEPubStatus) then fOnEPubStatus(Self, Format('%s wurde gespeichert.',[sEPubFileName]));
    except
      on e : Exception do begin
        if Assigned(fOnEPubException) then fOnEPubException(Self,'CopyToEPub: ' + e.Message)
        else raise Exception.Create(e.Message) at @TEPub.CopyToEPub;
      end;
    end;
  finally
  end;
  Application.ProcessMessages;
end;
...
Oder meintest Du mit Deiner Fragestellung, dass Du die ZIP-Datei als Stream verwenden willst, also das Archiv selbst nur im Speicher existiert und nicht als Datei?
  Mit Zitat antworten Zitat
 


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 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz