文章作者 100test 发表时间 2007:09:06 11:33:09
来源 100Test.Com百考试题网
  压缩文件可以认为是一个包装文件的容器。通过文件压缩,大量文件可以被打包起来并当作一个文件来看待。此外,压缩文件在尺寸上普遍比原文件小,如文本文件在压缩以后的平均大小是原来的40%。  
  因此,文件压缩能够大幅度的节省存储空间和网络传输时间,从而使得文件的携带和传输更加方便快捷。 
在DOS环境下,经常使用到的压缩程序是ARJ、RAR和PKZIP/PKUNZIP。在Windows环境下,经常使用到的压缩软件是WinZip和CleverZip。这些软件基本上都是共享软件,都可以从网络上免费获取。 
  在数据库应用程序中,经常需要对数据文件进行压缩备份或者从压缩文件中恢复。以Visual FoxPro为例,通常的做法是通过FoxPro语句调用压缩软件,然后在该压缩软件的操作界面上进行文件压缩或者文件恢复。这种做法不仅在操作界面上非常不友好,而且大大地削弱了应用程序的整体性。以下介绍的FoxPro程序利用了两个共享的动态链接库AZIP.DLL和AUNZIP.DLL在Visual FoxPro内部实现了文件压缩与解压缩功能,从而较好地解决了这个问题。 
  文件压缩程序 
  * 程序名称:AZIP.PRG 
  * 程序说明:在Visual FoxPro中实现文件压缩 
  * 程序要求:AZIP32.DLL放置在Windows的System目录或当前目录下 
  * 使用方法:USAGE: AZIP(lInitialize, sArchive, sInclFiles[, ZipParams]) 
  * 参数说明: 
  --lInitialize:.T. – 第一次使用本程序,.F. – 非第一次使用本程序 
  --sArchive: 带有扩展名的压缩文件名,如"C:\THISFILE.ZIP" 
  --sInclFiles:需要压缩的文件名称,不同文件名之间有一个空格 
  例1: "D:\CUSTDATA.DBF" 
  例2: "C:\CUSTOMER.DBF D:\*.TXT D:\DATABASES\*.*" 
  --ZIPparams:文件压缩参数[可选] 
  e(x) x = ’X’ 最大程度压缩 
  x = ’0’ 无压缩 
  x = ’S’ 最小程度压缩 
  x = ’N’ 普通压缩(缺省) 
  P 包括目录信息 
  S 使用密码(必须是最后一部分) 
  * 示范语句:AZIP(.T., "ZIPFILE", "*.DBF *.TXT Customer.doc") 
  * 返回参数:被压缩的文件数目,如果没有指定文件名则返回-1 
  * 接受参数 
  PARAMETERS lInitialize, sArchive, sInclFiles, ZIPparams 
  PRIVATE Params, sTemp 
  Params = PARAMETERS() 
  * 声明需要调用的DLL函数并使当前窗口获得焦点 
  IF Params = 0 OR lInitialize 
  PRIVATE HWND 
  DECLARE INTEGER GetActiveWindow IN win32api 
  HWND = GetActiveWindow() 
  DECLARE addZIP_Initialise IN AZIP32 
  DECLARE SHORT addZIP_SetParentWindowHandle IN AZIP32 SHORT @ HWindow 
  DECLARE SHORT addZIP_ArchiveName IN AZIP32 STRING @ sArchName 
  DECLARE SHORT addZIP_Include IN AZIP32 STRING @ sFileName 
  DECLARE SHORT addZIP_Recurse IN AZIP32 SHORT @ nRecurse 
  DECLARE SHORT addZIP_SetCompressionLevel IN AZIP32 SHORT @ nComprLvl 
  DECLARE SHORT addZIP_IncludeDirectoryEntries IN AZIP32 SHORT @ nInclDir 
  DECLARE SHORT addZIP_IncludeEmptyDirectoryEntries IN AZIP32 SHORT @ nInclEDir 
  DECLARE SHORT addZIP_Update IN AZIP32 SHORT @ nUpdate 
  DECLARE SHORT addZIP_Update IN AZIP32 SHORT @ nUpdate 
  DECLARE SHORT addZIP IN AZIP32 
  DECLARE SHORT addZIP_Register IN AZIP32 String @ RegName, Integer @ RegNum 
  DECLARE SHORT addZIP_Encrypt IN AZIP32 STRING @ sPassw 
  addZIP_Initialise() 
  addZIP_SetParentWindowHandle(HWND) 
  * 如果使用的是本动态链接库的注册版本,则可以添加下面一行 
  addZIP_Register("RegistrationName", RegistrationNumber) 
  * 其作用是在压缩文件中使用密码保护 
  * 如果没有指定压缩文件名,则返回0(没有文件被压缩) 
  IF Params < 2 
  RETURN 0 
  ENDIF 
  ENDIF 
  * 如果没有指定被压缩文件名,则响铃并返回0(没有文件被压缩) 
  IF Params < 3 
  ?? CHR(7) 
  MESSAGEBOX(’缺少操作参数!’,0, ’AZip 警告!’) 
  RETURN 0 
  ENDIF 
相关文章
为FoxPro中的弹出式菜单增加自学习功能
为VisualFoxPro应用程序增加文件压缩功能
为VFP添加循环微调控件类
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛