请教使用Zlib的compressbuf()来压缩字节数组的例子 ( 积分: 47 )

  • 主题发起人 主题发起人 wl_5545831
  • 开始时间 开始时间
W

wl_5545831

Unregistered / Unconfirmed
GUEST, unregistred user!
由于我的电脑不能上网所以就不将我的例子传上来了,我做起来的时候,在本机上可以使用
但是一拿到生产线就自动得跳出来了,所以请教大家。
全局变量 buffer:array [0..461] of byte
compressedbuffer:array[0..29] of byte;
通过使用compressbuf()这个函数来讲buffer压缩到compressedbuffer,压缩后的数组大小可能一般都是22个字节,所以将压缩后的实际大小传递给compressedbuffer[29],这样以后便与查询。
希望各位给些帮助!兄弟只有这47分了望大家见谅。[:D]
 
http://blog.sina.com.cn/u/40ac71670100077b
我只知道这么多,可能对你还没什么用。
 
源代码:
全局变量 buffer:array [0..461] of byte
procedure TForm_Main.Timer1Timer(Sender:TObject)
var
Tof:TFileStream;
WriteBuffer:array [0..29] of byte;
CompressBuffer:Pointer;
Size:Integer;
FileName:String;
begin
CompressBuffer:=nil;
Nodave.Readbytes(@buffer);
Compressbuf(@buffer,462,Compressbuffer,size);
Move(Compressbuffer^,writebuffer[0],size)
<------这里就程序自动退出了
writebuffer[29]:=size;
FileName:='plc.dat';
if FileExists(FileName)<>true then
Tof:=TFileStream.Create(FileName,fmCreate or fmShareDenyNone)
else
Tof:=TFileStream.Create(FileName,fmOpenReadWrite or fmShareDenyNone);
Tof.seek(0,soFromEnd);
Tof.writebuffer(writebuffer,30);
Tof.Free;
if CompressBuffer<>nil the FreeMem(Compressbuffer);
end;
 
原来我开始的时候以为压缩后的大小就是22个字节,没想到原来是300多,我设定的小了。
结束了!
 
后退
顶部