1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, zlib, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Decompresser(path : String);
var
InpBuf, OutBuf: Pointer;
OutBytes, sz: Integer;
outStream,inpStream: TMemoryStream;
begin
InpBuf := nil;
OutBuf := nil;
InpStream := TMemoryStream.Create;
InpStream.LoadFromFile(path);
inpstream.Read(sz,sizeof(integer));
outStream := TMemoryStream.Create;
if sz > 0 then
try
GetMem(InpBuf, sz);
inpStream.Read(InpBuf^, sz);
DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
outStream.Write(OutBuf^, OutBytes);
OutStream.Seek(SoFromBeginning,0);
InpStream.Size := 0;
inpStream.CopyFrom(OutStream,OutStream.Size);
InpStream.Seek(SoFromBeginning,0);
OutStream.SaveToFile(path);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
OutStream.Free;
end;
end;
Procedure Compresser(path : String);
var
InpBuf, OutBuf: Pointer;
InpBytes, OutBytes: Integer;
outStream,inpStream: TMemoryStream;
begin
InpBuf := nil;
OutBuf := nil;
InpStream := TMemoryStream.Create;
InpStream.LoadFromFile(path);
outStream := TMemoryStream.Create;
try
GetMem(InpBuf, inpStream.Size);
inpStream.Position := 0;
InpBytes := inpStream.Read(InpBuf^, inpStream.Size);
CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);
outstream.Write(Outbytes,sizeof(integer));
outStream.Write(OutBuf^, OutBytes);
OutStream.Seek(SoFromBeginning,0);
InpStream.Size := 0;
inpStream.CopyFrom(OutStream,OutStream.Size);
InpStream.Seek(SoFromBeginning,0);
OutStream.SaveToFile(path);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
OutStream.Free;
end;
end; |