社区
Delphi
帖子详情
didi接分
wxjh
2002-09-21 10:12:20
阿
...全文
74
2
打赏
收藏
didi接分
阿
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
D_Q
2002-09-21
打赏
举报
回复
zlib 1.1.4
D_Q
2002-09-21
打赏
举报
回复
谢谢!顺便给你发段代码吧。Zlib中String的压缩
------------------------------------------------------
中秋了!略备薄礼,请笑纳……http://61.151.251.40/1.jpg
------------------------------------------------------
procedure ZCompress(const inBuffer: Pointer; inSize: Integer;
out outBuffer: Pointer; out outSize: Integer;
level: TZCompressionLevel);
const
delta = 256;
var
zstream: TZStreamRec;
begin
FillChar(zstream,SizeOf(TZStreamRec),0);
outSize := ((inSize + (inSize div 10) + 12) + 255) and not 255;
GetMem(outBuffer,outSize);
try
zstream.next_in := inBuffer;
zstream.avail_in := inSize;
zstream.next_out := outBuffer;
zstream.avail_out := outSize;
ZCompressCheck(DeflateInit(zstream,ZLevels[level]));
try
while ZCompressCheck(deflate(zstream,Z_FINISH)) <> Z_STREAM_END do
begin
Inc(outSize,delta);
ReallocMem(outBuffer,outSize);
zstream.next_out := PChar(Integer(outBuffer) + zstream.total_out);
zstream.avail_out := delta;
end;
finally
ZCompressCheck(deflateEnd(zstream));
end;
ReallocMem(outBuffer,zstream.total_out);
outSize := zstream.total_out;
except
FreeMem(outBuffer);
raise;
end;
end;
//-------------------------------------
procedure ZDecompress(const inBuffer: Pointer; inSize: Integer;
out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer);
var
zstream: TZStreamRec;
delta : Integer;
begin
FillChar(zstream,SizeOf(TZStreamRec),0);
delta := (inSize + 255) and not 255;
if outEstimate = 0 then outSize := delta
else outSize := outEstimate;
GetMem(outBuffer,outSize);
try
zstream.next_in := inBuffer;
zstream.avail_in := inSize;
zstream.next_out := outBuffer;
zstream.avail_out := outSize;
ZDecompressCheck(InflateInit(zstream));
try
while ZDecompressCheck(inflate(zstream,Z_NO_FLUSH)) <> Z_STREAM_END do
begin
Inc(outSize,delta);
ReallocMem(outBuffer,outSize);
zstream.next_out := PChar(Integer(outBuffer) + zstream.total_out);
zstream.avail_out := delta;
end;
finally
ZDecompressCheck(inflateEnd(zstream));
end;
ReallocMem(outBuffer,zstream.total_out);
outSize := zstream.total_out;
except
FreeMem(outBuffer);
raise;
end;
end;
//-------------------------------------
function ZCompressStr(const s: String; level: TZCompressionLevel): String;
var
buffer: Pointer;
size : Integer;
begin
ZCompress(PChar(s),Length(s),buffer,size,level);
SetLength(result,size);
Move(buffer^,result[1],size);
FreeMem(buffer);
end;
//-------------------------------------
function ZDecompressStr(const s: String): String;
var
buffer: Pointer;
size : Integer;
begin
ZDecompress(PChar(s),Length(s),buffer,size);
SetLength(result,size);
Move(buffer^,result[1],size);
FreeMem(buffer);
end;
51单片机接收电脑发送数据并点亮相应LED灯并将数据返还电脑端显示示例Demo
串口通信示例Demo,51单片机接收电脑发送数据并点亮相应LED灯并将数据返还电脑端显示,使用的是UTF-8编码,如果出现乱码,请修改为UTF-8编码格式,注意:请自行根据你的单片机LED修改引脚号,可参考文章:https://blog.csdn.net/
didi
_ya/article/details/124289688 STC89C52
S-function模块案例详解(MATLAB程序)
编写的蹦极系统的S-function案例详解,可以参考博客:https://blog.csdn.net/
didi
_ya/article/details/118190541
51单片机案例——利用DS1302实现实时时钟和可调时钟的功能代码示例
51单片机案例——利用DS1302实现实时时钟和可调时钟的功能,可参考文章:https://blog.csdn.net/
didi
_ya/article/details/124297176 本程序还有三个子程序,分别为Key.c,LCD1602.c和DS1302.c,分别代表按键控制、LCD1602液晶屏和DS1302时钟芯片。直接运行main.c即可。 如果无法运行,请验证二个事项: 1.是否已安装LCD1602 2.是否已连接DS1302(我的单片机板子利用的是郭天祥的51单片机,因此没有DS1302,这时就可以自行淘宝购买,2块钱一个) 如果上述两个事项都没有问题,则需要检查引脚配置: 1.打开LCD1602.c,参考单片机原理图修改代码前几行LCD1602的引脚配置; 2.打开DS1302.c,参考单片机原理图修改代码前几行DS1302的引脚配置; 3.打开Key.c,参考参考单片机原理图修改函数中按键键码的引脚配置; 如果上述都检查过了没有问题,可以私信博主寻求帮助。
51单片机向电脑每隔一秒发送递增数据示例Demo
串口通信示例Demo,51单片机向电脑每隔一秒发送递增数据,使用的是UTF-8编码,如果出现乱码,请修改为UTF-8编码格式,注意:请自行根据你的单片机修改引脚号,可参考文章:https://blog.csdn.net/
didi
_ya/article/details/124289688 STC89C52
ssm框架模版
springMvc+spring+mybatis,修改数据库url即可使用,可用于前端交互和app接口。rest风格
Delphi
5,391
社区成员
262,735
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章