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