AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

Ein Thema von hoika · begonnen am 10. Sep 2013 · letzter Beitrag vom 6. Nov 2014
Antwort Antwort
hoika

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

TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

  Alt 10. Sep 2013, 08:25
Hallo,

ich versuche, dem Zipmaster (1.9) eine gezippte Datei "unterzuschieben",
die in einem TFileStream bzw. TMemoryStream (aus einem Blob-Feld) liegt.
Dann soll eine Datei (die einzige in der Zip) ausgepackt werden

Hier war schon eine ähnliche Frage, ohne Antwort ...

http://www.delphipraxis.net/99880-tz...-anwenden.html

Ich stehe genau dort, das er mir die gezippte Datei "auspackt".

Hier
http://www.freelists.org/post/delphizip/Hello,860
wird ein gezippter Stream entpackt,
aber es steht auch dort, wenn der Stream eine Zip-Datei ist,
klappt der Code nicht.

Man müsste aus dem Stream der Zipdatei genau die Stelle kennen,
wo die Zip-Datei beginnt.

Hier habe ich noch was, verstehe aber nicht ganz,
was der macht ;(

http://quide.googlecode.com/svn/trun...ileStorage.pas

Per LoadFromFile klappt ja alles.

Danke


Heiko
Heiko

Geändert von hoika (10. Sep 2013 um 08:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ralfschwalbe
ralfschwalbe

Registriert seit: 19. Jul 2007
Ort: Lichtenstein/Sachsen
133 Beiträge
 
Delphi XE3 Professional
 
#2

AW: TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

  Alt 10. Sep 2013, 08:55
Eigentlich weiß man doch, "wo" die "Zip"-Datei beginnt: http://en.wikipedia.org/wiki/Zip_(fi...)#File_headers
Ralf Schwalbe
viele Grüße...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

  Alt 10. Sep 2013, 11:10
Hallo,

suchst Du sowas?

Delphi-Quellcode:
procedure TfmSHSMain.acSeiteSpeichernExecute(Sender: TObject);
var
          Zip : TZipMaster;
          st : TZipStream;
begin
  Screen.Cursor := crHourGlass;
  st := TZipStream.Create;
  Zip := TZipMaster.Create(Nil);
  Try
    try
      Zip.NotMainThread := false;
      Zip.Unattended := True;
      Zip.DLLDirectory := fDll_Path;
      Zip.ZipFileName := Application.HelpFile;
      Zip.AddOptions := Zip.AddOptions + [AddDirNames];
      mtIndex.Locate('ID', edSeite.Tag, []);
      meTextEditor.Lines.SaveToStream(st);
      st.Position := 0;
      Zip.ZipStream.LoadFromStream(st);
      Zip.AddStreamToFile(edSeite.Text,0,FILE_ATTRIBUTE_ARCHIVE);
      wb.Navigate('http://localhost:' + IntToStr(hs.DefaultPort) + '/' + IntToStr(edSeite.Tag));
      wb.Refresh;
    except
      on e : Exception do begin
        WebConfig.WriteToLogFile('acSeiteSpeichernExecute: ' + e.Message);
      end;
    end;
  finally
    Zip.Free;
  end;
  meTextEditorChange(Nil);
  stbTexteditor.Panels[0].Color := clGreen;
  Screen.Cursor := crDefault;
end;
mtIndex ist eine kbMemTable (eine Datenbanktabelle, die nur im Arbeitsspeicher existiert).
meTextEditor ist ein DBMemo, das mit der Tabelle mtIndex verbunden ist und den Inhalt eines Memofeldes anzeigt (HTML-Dateien).
wb ist ein TWebBrowser, der die HTML-Dateien aus meTextEditor anzeigt.
edSeite.Text ist eine TDBEdit, das den Namen der HTML-Datei im ZIP-Archiv enthält.
edSeite.Tag enthält den technischen Schlüssel der HTML-Datei in der Datenbanktabelle.
  Mit Zitat antworten Zitat
hoika

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

AW: TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

  Alt 10. Sep 2013, 15:56
Hallo,

danke an beide,
ich schaue es mir an.
Ich glaueb, so langsam versteht ich das AddStreamToFile .

PS: ich weiss nicht, wo die Datei beginnt, das soll doch der Zipmaster machen ...


Heiko
Heiko
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

  Alt 10. Sep 2013, 17:45
Hallo,

habe glaub' ich beim ersten Lesen Deine Aufgabenstellung nur halb gelesen oder verstanden...

Du hast das Zip im Blob und willst dieses an den Zipmaster geben um dann daraus eine Datei zu extrahieren.

Meine Routine schreibt aber den Inhalt aus einem DBMemo als Datei in ein ZIP, ist also für Deine Aufgabenstellung überhaupt nicht zu gebrauchen
  Mit Zitat antworten Zitat
hoika

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

AW: TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

  Alt 10. Sep 2013, 17:53
Hallo,

passt scho
ich muss auch die andere Seite bauen,
also Datei als TFileStream vorhanden, soll gezippt (=Zip-Datei) und in die DB geschrieben werden.

ich konnte den Code nach einem Umbau auch bei mir verwenden
aber:

Jedesmal wird vom Zipmaster in eine Datei geschrieben,
lasse ich das ZipFileName weg, bekomme ich beim AddStreamToFile eine Fehlermeldung "zip file name fehlt".

Ich möchte, dass der das alles im Speicher hält.
Ich vermisse ein LoadZipFileFromStream und ein SaveZipFileToStream .

Kann Abbrevia das ?


Aktuell:
Komponente(z.B. auch ein Texteditor) -> SaveToFile Datei -> TZipmaster -> ZipDatei erzeugen als Datei -> BlobStream.LoadFrom File -> in die DB

Ziel:
Komponente(z.B. auch ein Texteditor) -> SaveToStream -> TZipmaster -> ZipDatei erzeugen als Stream -> in die DB


Ich möchste also alle File-Operationen eliminieren.


Danke


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#7

AW: TZipmaster: LoadFromStream(Zip-Datei) und dann Datei entpacken

  Alt 10. Sep 2013, 18:10
Wenn du nur Streams comprimieren willst, warum benutzt du dann DelZip und nicht ZLib?
Gruß
Cookie
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:45 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