AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Entpacker" erstellen (zip.datei)

Ein Thema von -Phantom- · begonnen am 13. Mär 2010 · letzter Beitrag vom 15. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
-Phantom-

Registriert seit: 26. Nov 2009
Ort: Bockhorst
319 Beiträge
 
Delphi 7 Enterprise
 
#1

"Entpacker" erstellen (zip.datei)

  Alt 13. Mär 2010, 17:02
Hey Leute,

Ich versuche derzeit einen kleinen "Entpacker" zu programmieren.
Ich schaffe es eine .zip datei zu erstellen die auch Größe hat, aber ich kann die .zip Datei nicht mit einem "richtigen" Entpacker entpacken. Ich benutze D7 und die Zlib Unit.
So packe ich zusammen
Delphi-Quellcode:
procedure Compress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream;
  CompressionStream: ZLib.TCompressionStream;
begin
inputstream := Tfilestream.Create(InputFileName, fmOpenRead);
 try
    OutputStream:=TFileStream.Create(OutputFileName, fmCreate);
    try
      CompressionStream:=TCompressionStream.Create(clMax, OutputStream);
      try
        CompressionStream.CopyFrom(InputStream, InputStream.Size);
      finally
        CompressionStream.Free;
      end;
    finally
      OutputStream.Free;
    end;
  finally
    InputStream.Free;
  end;
  end;
procedure Decompress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream;
  DeCompressionStream: ZLib.TDeCompressionStream;
  Buf: array[0..4095] of Byte;
  Count: Integer;
begin
  InputStream:=TFileStream.Create(InputFileName, fmOpenRead);
  try
    OutputStream:=TFileStream.Create(OutputFileName, fmCreate);
    try
      DecompressionStream := TDecompressionStream.Create(InputStream);
      try
        while true do
        begin
          Count := DecompressionStream.Read(Buf[0], SizeOf(Buf));
          if Count = 0 then
            break
          else
            OutputStream.Write(Buf[0], Count);
        end;
      finally
        DecompressionStream.Free;
      end;
    finally
      OutputStream.Free;
    end;
  finally
    InputStream.Free;
  end;
end;
// erst mal nur packen
procedure TForm1.sButton1Click(Sender: TObject);
begin
savedialog1.Execute;
speicher := savedialog1.FileName;
Compress(pfadn,speicher+'.zip');// pfadn = die Dateien in der Listbox , Speicher = der Speicherort wo die .zip Datei erstellt werden soll.
end;
Das Problem ist:
Wenn ich die .zip Datei entpacken will kommt die Fehlermeldung von meinem Entpacker
"Error this file Format cannot be extracted"
Mathias Jansen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#2

Re: Zip

  Alt 13. Mär 2010, 17:09
TCompressionStream komprimiert nur, aber es erstellt den nötigen ZIP-File-Header nicht, welcher zum Zip-Dateiformat gehört.

Wenn ich mich nicht irre, so wurde dieses "Problem" schon ein-/zweimal in anderen Threads behandelt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
-Phantom-

Registriert seit: 26. Nov 2009
Ort: Bockhorst
319 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Zip

  Alt 13. Mär 2010, 17:13
Wie erstelle ich den "Header". Was ist das überhaupt
Mathias Jansen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#4

Re: Zip

  Alt 13. Mär 2010, 17:20
http://de.wikipedia.org/wiki/ZIP_%28Dateiformat%29

Der "Header" beschreibt was wo und in welchem Format in der Datei liegt.

TCompressionStream erstellt aber nur die Daten, also es komprimiert nur den Dateiinhalt.
Die Daten/Informationen über Dateiname, sonstige Informationen, wie Dateigröße, Datum usw. und vorallem wo in der Datei der komprierte Dateiinhalt liegt, daß müßtest du selber erstellen.

Oder du vberwendest eine ZIP-Komponente, welche diesen Header verwaltet.
Mir fällt zwar grad kein Komponentenname ein, aber dieses sollte sich in den anderen ZIP-Threads finden lassen > Hier im Forum suchenzip oder Hier im Forum suchenzip komprimieren > http://www.delphipraxis.net/internal...p+komprimieren
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
-Phantom-

Registriert seit: 26. Nov 2009
Ort: Bockhorst
319 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Zip

  Alt 13. Mär 2010, 18:32
Oke... Also so wie hier
http://www.delphipraxis.net/internal...ct.php?t=42047 ?
Mathias Jansen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Aussagekräftiger Titel

  Alt 13. Mär 2010, 19:10
Bitte gib deinem Beitrag einen aussagekräftigen Titel. Der jetzige Titel lässt nicht erkennen, um was für ein Problem oder Frage es sich handelt. Um den Titel zu ändern, editiere einfach deinen ersten Beitrag. Damit erleichterst du das Auffinden deines Beitrages mit der Suche und ersparst anderen Mitglieder ein unnötiges Öffnen deines Beitrages.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Zip

  Alt 13. Mär 2010, 19:12
Nichtsdestotrotz werfe ich mal wieder Abbrevia in den Raum.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
-Phantom-

Registriert seit: 26. Nov 2009
Ort: Bockhorst
319 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: "Entpacker" erstellen (zip.datei)

  Alt 13. Mär 2010, 19:26
Das scheit ja schon mal nicht schlecht zu sein... muss nur noch lernen wie man damit umgeht..
Mathias Jansen
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: "Entpacker" erstellen (zip.datei)

  Alt 13. Mär 2010, 22:05
ich nehme immer ZipForge von ComponentAce
Michael Kübler
  Mit Zitat antworten Zitat
-Phantom-

Registriert seit: 26. Nov 2009
Ort: Bockhorst
319 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: "Entpacker" erstellen (zip.datei)

  Alt 14. Mär 2010, 12:21
Ich habe es nun mit der Abbrevia Komponente gemacht. So ich schaffe es nun ein .zip Datei zu erstellen. Aber wie bekomme ich mehrere Dateien in die .zip ? ( Soll ich neues Thema aufmachen?)
Mathias Jansen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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