请问、如何用delphi自代的压缩单元,将一些自定义的数据写入压缩文件,最重要的是不影响解压缩之后的数据,高分相送。 请问、如何用delphi自代的压缩单元,将一些自定义的数据写入压缩文件,最重要的是不影响解压缩之后的数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Uses Zlibprocedure TMyClass.CompressStream(var AinStream, AoutStream: TMemoryStream);var InpBuf, OutBuf: Pointer; InpBytes, OutBytes: Integer;begin InpBuf := nil; OutBuf := nil; try GetMem(InpBuf, AinStream.Size); AinStream.Position := 0; InpBytes := AinStream.Read(InpBuf^, AinStream.Size); CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes); AoutStream.Write(OutBuf^, OutBytes); finally if InpBuf <> nil then FreeMem(InpBuf); if OutBuf <> nil then FreeMem(OutBuf); end;end;procedure TMyClass.DecompressStream(var AinStream, AoutStream: TMemoryStream);var InpBuf, OutBuf: Pointer; OutBytes, sz: Integer;begin InpBuf := nil; OutBuf := nil; sz := AinStream.Size - AinStream.Position; if sz > 0 then try GetMem(InpBuf, sz); AinStream.Read(InpBuf^, sz); DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes); AoutStream.Write(OutBuf^, OutBytes); finally if InpBuf <> nil then FreeMem(InpBuf); if OutBuf <> nil then FreeMem(OutBuf); end; AoutStream.Position := 0;end; 最好不用外部控件,Zlib算法压缩已经很好了,我上面给你的那两个函数是可以直接用的,CompressStream(var AinStream, AoutStream: TMemoryStream);AinStream是输入流,要压缩的流,AoutStream是压缩后的流DecompressStream(var AinStream, AoutStream: TMemoryStream);是解压的过程这都是无损压缩,解压后是一模一样 动态库中窗体上的提示问题? 在Web Server Application里面可以建立TCP连接么? 自己实现TDBNavigator功能 dll调用的问题 祝愿天下的母亲都健康快乐 关于ttable的一个小问题 delphi7 窗体出错 CSDN改版后不好,请大家到这里暂聚:http://delphi8013.xilubbs.com/ 关于WEBSNAP的 问题 Delphi Corba服务器如何连接poa模式的corba服务器? 救命啊!我给40分! 简单sql语句执行错误
procedure TMyClass.CompressStream(var AinStream, AoutStream: TMemoryStream);
var
InpBuf, OutBuf: Pointer;
InpBytes, OutBytes: Integer;
begin
InpBuf := nil;
OutBuf := nil;
try
GetMem(InpBuf, AinStream.Size);
AinStream.Position := 0;
InpBytes := AinStream.Read(InpBuf^, AinStream.Size);
CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);
AoutStream.Write(OutBuf^, OutBytes);
finally
if InpBuf <> nil then
FreeMem(InpBuf);
if OutBuf <> nil then
FreeMem(OutBuf);
end;
end;procedure TMyClass.DecompressStream(var AinStream, AoutStream: TMemoryStream);
var
InpBuf, OutBuf: Pointer;
OutBytes, sz: Integer;
begin
InpBuf := nil;
OutBuf := nil;
sz := AinStream.Size - AinStream.Position;
if sz > 0 then
try
GetMem(InpBuf, sz);
AinStream.Read(InpBuf^, sz);
DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
AoutStream.Write(OutBuf^, OutBytes);
finally
if InpBuf <> nil then
FreeMem(InpBuf);
if OutBuf <> nil then
FreeMem(OutBuf);
end;
AoutStream.Position := 0;
end;
CompressStream(var AinStream, AoutStream: TMemoryStream);
AinStream是输入流,要压缩的流,AoutStream是压缩后的流
DecompressStream(var AinStream, AoutStream: TMemoryStream);是解压的过程
这都是无损压缩,解压后是一模一样