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
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 15:53
Hallo,
danke für das Beispiel.

Ja, ich will die Zipdatei nicht auf der Platte haben.
Die Zipdatei ist in einem Blob-Feld in der DB.

Ich habe also einen TMemoryStream, dort ist die Zipdatei drin.

Ab der 1.92 geht ja angeblich was mit ExtStream, aber irgendwie klappt das bei mir nicht,
so wie hier beschrieben.

http://www.delphizip.org/192/help/un...e_examples.htm
procedure TForm1.UnzToFile2;



Delphi-Quellcode:
var
  ZM: TZipMaster;
  MS: TMemoryStream;
begin
  ZM:= TZipMaster.Create;
  MS.Position := 0;
  ZM.ExtStream.CopyFrom(MS, 0);
Irgendwie so.

Aber du hast ja
fZip.ZipStream.LoadFromStream(st);
genommen.

Heiko
Heiko

Geändert von hoika ( 1. Jun 2016 um 16:00 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 16:28
Bei meinem Beispiel handelt es sich halt um eine ZIP-Datei auf der Platte, es ist für Dich, da Du das Zip ja in 'ner DB hast, nicht geeignet.

Wie man ein ZIP als Stream handhabt, weiß ich nicht, hab's noch nicht ausprobiert.

aber ich rate jetzt mal so als Idee:
Delphi-Quellcode:
procedure TForm1.CopyToZip;
var
  Idx: Integer;
  SourceStream: TStream;
  ZEntry: TZMDirEntry;
  ZM: TZipMaster;
  st: TMemoryStream;
begin
  ZM := TZipMaster.Create(nil);
  // Hierein kommt das, was ins ZIP übernommen werden soll
  st := TMemoryStream.Create;
  // st irgendwie irgendwoher befüllen
  try
    SourceStream := hier den Blobinhalt in den Stream kopieren;
    try
      ZM.ExtStream := SourceStream; // connect to ZipMaster
      if ZM.ErrCode <> 0 then
        raise Exception.Create('Invalid zip file: ' + ZM.ErrMessage);
      st.Position := 0;
      ZM.ZipStream.LoadFromStream(st);
      ZM.AddStreamToFile('Dateiname im ZIP',0,FILE_ATTRIBUTE_ARCHIVE);
      SourceStream ins Blob kopieren
    finally
      SourceStream.Free;
    end;
  finally
    st.Free;
    ZM.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 16:46
Was spricht denn gegen TZipfile aus System.Zip.pas? Das hat doch ein overload für Open, dem man auch einen TStream mitgeben kann.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 17:02
Was spricht denn gegen TZipfile aus System.Zip.pas? Das hat doch ein overload für Open, dem man auch einen TStream mitgeben kann.
Ok, gibt es seit XE2, bei meinem alten Delphi 7 nicht dabei.

Laut Doku könnte es aber zum ZIP-Master weitgehend kompatibel sein (so auf die Schnelle mal drübergeschaut) und damit der Änderungsaufwand vertretbar sein.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 18:32
Hallo,
TZipFile kann meines Wissens keine passwortgeschützen Zips.

Das ganze hat sich glaube ich aber erledigt.

Der Link in meinem vorigen Beitrag funktioniert, k.A., was ich da falsch gemacht hatte.

Jetzt geht es weiter mit dem Zippen, mal schauen.


Danke an alle.


Heiko
Heiko

Geändert von hoika ( 1. Jun 2016 um 18:38 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 18:50
Ich wollte auch erst das ganz normale TZipFile vorschlagen, aber das hatte bei XE4 (das hast du angegeben) noch keinen Umgang mit Streams, erst später.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#7

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 19:59
Ich wollte auch erst das ganz normale TZipFile vorschlagen, aber das hatte bei XE4 (das hast du angegeben) noch keinen Umgang mit Streams, erst später.
Gibt es aber schon seit XE2:

procedure TZipFile.Open(ZipFileStream: TStream; OpenMode: TZipMode);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Datei zippen/ entzippen: TZipmaster oder Abbrevia

  Alt 1. Jun 2016, 21:15
Hallo,
ich gebe mal wieder entnervt mit dem ZipMaster auf ...
Viele Stunden Freizeit umsonst verballert.

Warum kann ich nicht, ohne eine physische Zip-Datei anzugeben,
eine Zip-Datei als simplen Stream erzeugen lassen ???

Ich will einfach keine Datei-Operationen für etwas, was komplett im Speicher laufen könnte!

Ich werde mir jetzt Abbrevia ansehen, die können das vielleicht besser.

PS:
TZipMaster 1.93 kann das vielleicht ???


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:59 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