⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compress.pas

📁 絮语2007视频聊天软件源程序.仅供参考
💻 PAS
字号:
unit compress;

interface
uses zlib,SysUtils,Classes;

procedure EnCompress(CompressedStream:TMemoryStream);overload;
procedure UnCompress(CompressedStream:TMemoryStream);overload;
procedure EnCompress(var s:string);overload;
procedure UnCompress(var s:string);overload;


implementation

procedure EnCompress(var s:string);
var stream:tmemorystream;
begin
try
stream:=tmemorystream.Create;
stream.WriteBuffer(s[1],length(s));
EnCompress(stream);
stream.Seek(0,soFromBeginning);
setlength(s,stream.size);
stream.ReadBuffer(s[1],stream.size);
finally
freeandnil(stream);
end;

end;

procedure UnCompress(var s:string);
var stream:tmemorystream;
begin
try
stream:=tmemorystream.Create;
stream.WriteBuffer(s[1],length(s));
UnCompress(stream);
stream.Seek(0,soFromBeginning);
setlength(s,stream.size);
stream.ReadBuffer(s[1],stream.size);
finally
freeandnil(stream);
end;

end;

procedure EnCompress(CompressedStream:TMemoryStream);
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin  
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
Try
 SourceStream:=TCompressionStream.Create(clFastest, DestStream);
 try
 CompressedStream.SaveToStream(SourceStream);
 finally
 freeandnil(SourceStream);
 end;
CompressedStream.Clear;
CompressedStream.WriteBuffer(Count, SizeOf(Count));
CompressedStream.CopyFrom(DestStream, 0);
finally
freeandnil(destStream);
end;  

end;


procedure UnCompress(CompressedStream:TMemoryStream);
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: Integer;
Begin
CompressedStream.Seek(0,soFromBeginning);
CompressedStream.ReadBuffer(Count, SizeOf(Count));
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Try  
SourceStream.ReadBuffer(Buffer^, Count);
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;
CompressedStream.Clear;
CompressedStream.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
freeandnil(sourcestream);
freeandnil(DestStream);
end;
 
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -