利用Delphi轻松编制压缩助理程序

转载 2007年09月27日 16:33:00
一、问题的提出
Winzip是电脑使用过程中,备份和数据交换的常用工具之一。然而,在实际使用过程中,笔者发现Winzip在用来进行数据交换操作时有一些不尽人意的地方
:
1当将一个大的压缩包分卷压缩到软盘上时,操作者手头必须有多张软盘才能完成数据包的转存,这种情况如果发生在手头只有一张软盘的情况下,可真的没办法。
2如果分卷存储数据软盘中的某张软盘在写入或读出数据时发生错误,则上一过程必须重做
3要在其它机器上读出软盘上的数据,则该机器也必须要求安装了Winzip。
那么,有没有好的解决办法,避免上述容易出错和烦琐安装软件的过程呢?因此,笔者用Delphi5.0编制了压缩助理程序,以为数据交换提供一种辅助方法和手段。

二、压缩助理程序设计的基本思路
通过压缩工具将要在不同计算机间交换的文件压缩并转换成自解压格式,通过压缩助理程序将该自解压包以软盘容量为单位分割成多个存储在硬盘上的文件,这样,通过Copy命令和一张软盘就能够实现对大的压缩包在不通的计算机间交换数据;再利用压缩助理程序在另一台机器上将上述多个文件合并,成为自解压文件格式,避免了再安装Winzip软件的繁琐过程。通过压缩助理程序,上述问题即可迎刃而解。

三、实现方法
1程序设计界面

2控件属性设置
Form1的BorderStyle=bsDialog;两个OpenDialog控件名称分别设置为OpenDlgOpenDlg1;设置OpenDlg1的Options属性中的ofAllowMultiSelect=True,Filter属性设置为Split File(*.spt)|*.spt|All File(*.*)|*.*;SaveDialog的名称为SaveDlg;SpinEdit1的Value=1440,MinValue=1440,MaxValue=1600Increment=1;在“合并”按钮左边的控件是ListBox,名称ListBox1,ListBox1的Sorted=True;其它控件:一个TImage控件,2个Tedit和5个Tbutton,其属性从略。
3压缩助理程序的实现
从上到下五个命令按钮的代码依次如下
:
//选择待分割的文件
procedure TForm1.Button1Click(SenderTObject
);
begin
if OpenDlg.Execute then
begin
Edit1.Text := OpenDlg.FileName
;
end
;
end
;

//设置分割后的切片文件的存储位置
//SelectDirectory函数声明在FileCtrl单元中
procedure TForm1.Button2Click(SenderTObject
);
var
Dirstring
;
begin
if SelectDirectory('选择存储目录:'''Dirthen
begin
Edit2.Text := Dir '/'
;
end
;
end
;

//分割文件为切片文件,自动命名
procedure TForm1.Button3Click(SenderTObject
);
var
IKRestLenInteger
;
AFBFTFileStream
//文件流对象
Fnstring
//文件名
Buf Integer
//单碟容量
begin
if (Edit1.Text ''or (Edit2.Text ''then
begin
Beep
;
Exit
;
end
;
//单蝶容量计算为字节数
buf := SpinEdit1.Value 1024
;
:= 1
;
try
Af := TFileStream.Create(Edit1.TextfmOpenRead
);
:= Af.Size div Buf
;
Rest := Af.Size Buf
;
For I := to K do
begin
Fn := Edit2.Text IntToStr(I) + '.spt'
//文件名
Bf := TFileStream.Create(FnfmCreate
);
Bf.CopyFrom(AfBuf
);
Bf.Free
;
end
;
if Rest then
begin
Fn := Edit2.Text IntToStr(I) + '.spt'
;
Bf := TFileStream.Create(FnfmCreate
);
Bf.CopyFrom(AfRest
);
Bf.Free
;
end
;
finally
AF.Free
;
end
;
end
;

//将分割后的切片文件装入到ListBox1中
procedure TForm1.Button4Click(SenderTObject
);
var
Integer
;
begin
if OpenDlg1.Execute then
For I := to OpenDlg1.Files.Count do
ListBox1.Items.Add(OpenDlg1.files[I
]);
end
;

//合并切片文件并保存合并结果
procedure TForm1.Button5Click(SenderTObject
);
var
AfBfTFileStream
//文件流对象
FnFtstring
//文件名
Integer
;
begin
if ListBox1.Items.Count then
begin
Beep
;
Exit
;
end
;
if SaveDlg.Execute then
begin
Fn := SaveDlg.FileName
;
try
Af := TFileStream.Create(FnfmCreate
);
For I := to ListBox1.Items.Count -do
begin
Ft := ListBox1.Items[I
];
Bf := TFileStream.Create(FtfmOpenRead
);
Af.CopyFrom(BfBf.Size
);
Bf.Free
;
end
;
finally
Af.Free
;
end
;
end
;
end
;
 

利用huffman编码实现压缩文件

哈夫曼是一种常用的压缩方法。是1952年为文本文件建立的,其基本原理是频繁使用的数据用较短的代码代替,很少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。...
  • dl0914791011
  • dl0914791011
  • 2014年10月15日 16:03
  • 7100

基于哈夫曼编码完成的文件压缩及解压

基于哈夫曼编码完成的文件压缩及解压
  • Li_Ning_
  • Li_Ning_
  • 2016年04月25日 11:04
  • 4739

Delphi XE8 程序瘦身.编译后EXE最低90KB.

目前网络上 XE8程序瘦身基本为XE5以前的方法,虽然该方法也必须援用之前方法.但需要说明一下,现在release比debug瘦身效果相差无几.我的XE8单独窗体EXE文件为11056KB.瘦身后ex...
  • jdper
  • jdper
  • 2016年01月21日 10:03
  • 2187

薄荷团队推出减肥助理Moya:轻松享有健康生活

减肥永远是女性朋友们热烈讨论的话题之一。由于“减肥市场”的潜力巨大,马海华于2006年创立了在线减肥平台“薄荷网”。该网站业内口碑还不错,目前的注册用户已有大约150万人,每天的PV近100万,UV近...
  • leiphone
  • leiphone
  • 2012年05月08日 10:14
  • 316

企业助理系统Delphi

  • 2015年01月08日 13:52
  • 3.39MB
  • 下载

天骄2助理Delphi 源代码

  • 2010年03月22日 11:30
  • 259KB
  • 下载

Verilog编写呼吸灯,利用PWM波实现功能,轻松掌握PWM波使用方法,有仿真程序

  • 2017年06月26日 15:27
  • 33.83MB
  • 下载

极域电子教室-利用程序-轻松入侵全班同学电脑

前段时间参加了培训,上课的时候用的是“极域电子教室 V6 2007 豪华版”; 这个系统分教师端和学生端的,我们是学生,装的是学生端;出于好奇,我自己装了个教师端玩一玩。 教师端果然强大呀,可...
  • envon123
  • envon123
  • 2013年07月04日 22:46
  • 22776

利用Delphi编写Socket通信程序

一、Delphi与Socket   计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用te...
  • xiaojian365
  • xiaojian365
  • 2012年03月05日 13:33
  • 387

利用Delphi编写屏幕保护程序

====================================================== 注:本文源代码点此下载 =============================...
  • javazhuanzai
  • javazhuanzai
  • 2012年01月15日 01:45
  • 147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用Delphi轻松编制压缩助理程序
举报原因:
原因补充:

(最多只允许输入30个字)