Welcome

首页 / 软件开发 / Delphi / Delphi利用数据库实现文件打包

Delphi利用数据库实现文件打包2012-01-15 csdn博客 张国威Delphi利用数据库实现文件打包的基本思路分析:

【1】在Delphi中,把文件读取为文件流,再以流的形式保存在数据库的OLE 对象的字段中;

【2】当要释放文件包时,可以直接读取数据库的OLE 对象字段,另保存为文件。

以下为具体代码的实现过程:

【1】打开Delphi,去到“File”=》“New”=》Application,新建一个应用程序工程;

【2】在Form1新建1个Edit控件(用于输入被打包的文件的文件名),命名为FileName;新建两个Button控件,其一命名为Import,其二命名为Export;新建ADOTable1,新建DataSource1;

【3】打开ACCESS新建一个数据库db1.mdb,只有两个字段,其一为filename(字符,主键),其二为filestream(OLE 对象),最后,就是把程序跟数据库连接起来(这里就不细说Delphi如何连接数据库,其实很简单)。

正式开始编写代码,这里只需要给两个BUTTON控件的CLICK事件写代码即可:

1. procedure TForm1.ImportClick(Sender: TObject);//这是打包文件的代码,这里只打包一个文件,具体的循环过程就靠你自己搞定了
2.
3. var
4.
5. stream:TFileStream;
6.
7. begin
8.
9. stream:= TFileStream.Create(FileName.Text,fmShareExclusive);
10.
11. ADOTable1.Append();
12.
13. TBlobField(ADOTable1.FieldByName("filestream")).LoadFromStream(stream);//保存文件流
14.
15. ADOTable1.FieldByName("filename").Value:=FileName.Text;//保存文件名
16.
17. ADOTable1.Post;
18.
19. stream.Free;
20.
21. DeleteFile(FileName.Text);
22.
23. end;
24.
25.
26.
27. procedure TForm1.ExportClick(Sender: TObject);//这是释放文件的代码,这里只释放第一个文件,具体的循环过程就靠你自己搞定了
28.
29. var
30.
31. stream:TMemoryStream;
32.
33. begin
34.
35. stream:=TMemoryStream.Create;
36.
37. ADOTable1.First;
38.
39. FileName.Text:=ADOTable1.FieldByName("filename").Value;
40.
41. TBlobField(ADOTable1.FieldByName("filestream")).SaveToStream(stream);
42.
43. stream.SaveToFile(FileName.Text);
44.
45. stream.Free;
46.
47. end;

附:由于文件的打包释放都是用流,因此可以利用流来压缩、加密文件!