Thema: Delphi ZLib Probleme

Einzelnen Beitrag anzeigen

Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#1

ZLib Probleme

  Alt 16. Sep 2006, 16:14
Hi Leute,

also ich habe diesen Netten Quellcode von dsdt.info
Zitat:
Dateien komprimieren


--------------------------------------------------------------------------------

Die Unit ZLib, die Delphi beiliegt, ermöglicht die ZIP-Komprimierung von Dateien.

uses ZLib, SysUtils;
Packen:
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;
Entpacken:

Delphi-Quellcode:
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;
Da der Code so wunderschön ist habe ich gedacht es gibt keine Probleme damit. Doch wenn ich eine beliebige Datei packe dann erstellt er mir auch schön das Archiv, doch dummerweise gibt WinRar eine Fehlermeldung aus und 7-zip auch und er kann das Archiv nicht öffnen.
Funktioniert der Code bei euch?
Was kann ich falsch gemacht haben?

Fehler die ich von vorne rein ausschließe:
- In- und/ oder Output String falsch (habe es mit einem constanten String versucht)
- Fehler in der zu komprimierenden Datei (ich habe es mit mehreren ausprobiert)

Ich habe schon ein bisschen im Forum gesucht und bin auf diverse Komponenten gestoßen, die entweder ebenfalls packen können.
Doch ich schaffe mir nur sehr ungern eine neue Komponente an, da ich immer nur genau eine Datei packen will und weder Passwort noch etc. brauche.

Gruß Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat