📄 compress.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 + -