Decompress and Compress works 100% corect!
Keys:
Decompress:
Compress:
U need ZLibex.pas and u can download it from link below:
Credits for shore only me (Gunz) r Mauka @Rz
Atached binary file (WIP - Work in Progress)!
Keys:
Code:
const Xorkey: array [0 .. 3] of Byte = ($92, $65, $67, $57);
Code:
procedure DecompressFile(const SourceFile, DestFile: string);
var
SourceStream: TStream;
ZLibStream: TStream;
DestStream: TStream;
DecSize: Cardinal;
Ms: TStream;
i: Integer;
Data: TBytes;
MsOut: TStream;
begin
SourceStream := TFileStream.Create(SourceFile, fmOpenRead);
Ms := TMemoryStream.Create;
MsOut := TMemoryStream.Create;
Ms.CopyFrom(SourceStream, SourceStream.Size);
Ms.Position := 0;
SetLength(Data, Ms.Size);
Ms.Read(Data[0], Ms.Size);
DecSize := PDword(@Data[0])^;
for i := 0 to 3 do
Data[i + 4] := Data[i + 4] xor Xorkey[i mod 4];
MsOut.Size := Length(Data);
MsOut.Write(Data[0], Length(Data));
MsOut.Position := 4;
try
ZLibStream := TZDecompressionStream.Create(MsOut, -15);
try
DestStream := TFileStream.Create(DestFile, fmCreate or fmShareExclusive);
try
ZLibStream.Read(Data[0], SizeOf(DecSize));
DestStream.Write(Data[0],SizeOf(DecSize));
DestStream.CopyFrom(ZLibStream, DecSize -4);
finally
DestStream.Free;
end;
finally
ZLibStream.Free;
end;
finally
SourceStream.Free;
Ms.Free;
MsOut.Free;
end;
end;
Code:
procedure CompressFile(const SourceFile, DestFile: string);
var
SourceStream: TStream;
ZLibStream: TStream;
DestStream: TStream;
DecSize, FixShit: Integer;
i: Integer;
Data: TBytes;
begin
SourceStream := TFileStream.Create(SourceFile, fmOpenRead);
try
DecSize := SourceStream.Size;
DestStream := TFileStream.Create(DestFile, fmCreate or fmShareExclusive);
DestStream.Write(DecSize,SizeOf(DecSize));
try
ZLibStream := TZCompressionStream.Create(DestStream, zcFastest , -15, 8, zsDefault);
try
repeat
FixShit := SourceStream.Read(DecSize, SizeOf(DecSize));
ZLibStream.Write(DecSize, FixShit);
until FixShit = 0;
finally
ZLibStream.Free;
end;
SetLength(Data, DestStream.Size);
DestStream.Position := 0;
DestStream.Read(Data[0],Length(Data));
DestStream.Position := 0;
for i := 0 to 3 do
Data[i + 4] := Data[i + 4] xor Xorkey[i mod 4];
DestStream.Write(Data[0],Length(Data));
finally
DestStream.Free;
end;
finally
SourceStream.Free;
end;
end;
Code:
uses ZLibEx;
Code:
http://www.base2ti.com/?id=delphi.zlib
[Only registered and activated users can see links. Click Here To Register...]
Atached binary file (WIP - Work in Progress)!