当然可以 不过Delphi自代的 Zlib 模块不好 留邮件 我发你个更好的!
解决方案 »
- 如何实现Rave报表打印一行回写一行,以记录是否打印
- 大家好,我是Delphi的新手,求救Delphi关于串口通信的问题
- GDI+如何实现多页tiff文件的添加和移除?
- 谁有delphi聊天室的代码或者下载网址的??
- 如何给ADOConnection指定连接字符串
- FastReport 3.05中的两个问题
- 如何直接通过选择操作系统的输入法在stringgrid的各个cells中任意输入汉字或俄文。
- 在TreeView控件中。当点击图标时,要改变其图标的图片,如何实现?
- 请问用ALter建立表时,有一个字段为小数10位,小数后2位,该如何写?谢谢!
- 字段类型设计的问题?
- 10进制转换成16进制的函数?哪位高手知道DELPI里?急............!!!!!!!!!!11111
- 求套打解决方案
uses zlib,classes,Sysutils;procedure ZStream(var CompressedStream: TMemoryStream);
procedure UnZStream(var res: TMemoryStream);implementationprocedure ZStream(var CompressedStream: TMemoryStream);
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
//获得数据流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(clDefault, DestStream);
Try
//SourceStream中保存着原始的数据流
CompressedStream.SaveToStream(SourceStream);
//将原始数据流进行压缩, DestStream中保存着压缩后的数据流
SourceStream.Free;
with CompressedStream do begin
Clear;
//写入原始数据流尺寸
WriteBuffer(Count, SizeOf(Count));
//写入经过压缩的数据流
CopyFrom(DestStream, 0);
//恢复流指针
Position:=0;
end;
finally
DestStream.Free;
end;
end;procedure UnZStream(var res:TMemoryStream);
//解压缩文件数据流
var
SourceStream: TDecompressionStream;
Buffer: PChar;
Count: Integer;
src:TMemoryStream;
Begin
//从被压缩的数据流中读出原始数据流尺寸
res.ReadBuffer(Count,SizeOf(Count));
//根据数据流尺寸大小为将要读入的原始数据流分配内存块
GetMem(Buffer,Count);
SourceStream := TDecompressionStream.Create(res);
Try
//将被压缩的数据流解压缩,然后存入 Buffer内存块中
SourceStream.readBuffer(Buffer^, Count);
//将数据流保存至res流中
res.Clear ;
res.writeBuffer(Buffer^, Count);
res.Position := 0;//复位流指针
finally
FreeMem(Buffer);
end;
end;end.
我的信箱是[email protected]
var
C:=TMemoryStream
begin
C:=TMemoryStream.Create;
C.LoadFormFile('你的AVI');//读入
ZStream(C);//压缩后的流 可以保存成文件 也可以直接用。
//UNZStream(C);//解压缩
C.Free;//释放
end;