精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖外部引用〗>>译文:怎样使用CABControl控件

主题:译文:怎样使用CABControl控件
发信人: fbilo()
整理人: hunter__fox(2002-03-16 23:01:46), 站内信件
怎样使用CABControl控件


来自:GFC software
译者:fbilo
更多的文章请访问foxer资料站:http://fbilo.myrice.com
**********************************************************************
********
译者言:

CabControl是一个网上常见的用以压缩的ActiveX控件,有许多地方提供下栽。


很久以前我就下载了这个文件,当我安装了它以后,却怎么也无法在VFP的工具
菜单——选项——控件——ActiveX控件中找到它,根本没有这个CabControl控件


所以我跑到它的厂家GFC软件的主页上去,查看它的文档。文档中说这个控件会
以"GFC Cab Control ActiveX Control module"的名字出现在ActiveX控件的列表
中,但我仍然无法找到这个名字的控件。

当我百无聊赖的翻看它的文档时,我忽然发现这个控件有两个简称:FCI(File
 Compression Interface 文件压缩界面)和 FDI (File Decompression interf
ace 文件解压缩界面),连忙一查ActiveX控件列表,果然!终于找到了这个控件
的两个部分:FCIControl和FDIControl。不知道这是厂家的失误还是VFP的原因。
总而言之,我可以用它了!

以下是我翻译的该控件的官方文档。

**********************************************************************
********

介绍

GFC's Cab Control@是一个革命性的建立和解压CAB文件的ActiveX控件。它包含
一个稳定而快速的压缩和解压引擎。同时,它还支持多种方案,包括:MSZIP, L
ZX, 或其他格式。最好的是:支持的方案使用无损压缩,这意味着你不必再为文
件损坏而苦恼了。另外,既然CAB文件可以使用任何扩展名,你可以使用它来编码
数据文件。它是一个简单、容易、可靠的压缩信息的途径。在Zip文件爆炸般的数
据海洋中,通过这种技术,除了你自己的想象力,没有其他东西能够束缚你。

开始

开始使用我们的GFC CabControl不可能太简单。你必须首先从http://www.gfcs
oftware.com/cabcontrol.htm 下载未注册的版本。然后把它解压到一个临时目录
并运行安装程序。这将根据你的选择安装控件和它的支持文件到你指定的目录(
你可以从控制面板的添加/删除程序中卸载它,它将删除自己在注册表中的内容,
你仍然必须从你的硬盘上手动删除一些文件)。现在,你就可以通过在选项中选
择“GFC Cab Control ActiveX Control module”为你自己的Visual Basic(或
者任何其他OLE兼容的开发环境)添加这个控件了。

(译者注:正如我在开头所说的那样,在VFP中,我们应该选择 FCIControl 和
 FDIControl。)

FCI预览

这份文件压缩界面文档分成两个部分:控件的属性的文档、控件的方法的文档。
在我们深入研究之前,有一个共享软件的属性需要说明一下。这个共享控件将只
允许你压缩总计大约100MB的文件。它是这个控件的FCI部分中的一个属性compMB
。这个属性不能被更改,同时它告诉你在允许的100MB中已经压缩了多少MB的文件
。在你读完整个文档之前,你也许想要下载FCI的演示版http://www.gfcsoftwar
e.com/fcidemo.zip。

FCI属性

下面是FCI控件的几个主要属性。这些属性中的大多数都非常的简单,但你需要
对FirstName, SurName, 和 NameRule 这几个属性特别关注一下,它们会有较多
的解释。

CabPath
CompThresh
FirstName
Maxsize
NameRule
SetID
SurName 

CabPath

CabPath是一个当CAB文件建立时指定建立的文件保存在哪里的字符串。比如,如
果 CABPath 是 C:\,那么建立的CAB文件将被放在C盘的根目录下面;如果 CABP
ath 是 C:\Windows,那么建立的 CAB 文件将被放在 Windows 目录下。

CompThresh

CompThresh 是一个用以指定使用多大的压缩率的属性,它是一个 Integer (整
数)值。这个数字越高压缩率越高,当然,压缩的速度也就越慢。除非被压缩的
文件比这个属性的值大,否则这个属性没有任何效果。默认的值是1024 或者 1K
B。

FirstName

FirstName 属性和 SurName 、 NameRule 属性结合使用来决定被生成的CAB文件
将会有怎么样一个文件名。这个属性是包含输出文件名的第一部分的一个字符串
。例如,如果 FirstName 为“ test ”,那么CAB文件将取名为 test.cab, tes
t1.cab, 或者 test.1 这样的形式。更多的信息请查看 SurName 和 NameRule 属
性。

MaxSize

MaxSize 属性决定将要被建立的CAB文件的最大尺寸。当将被建立的CAB文件达到
MaxSize 属性指定的文件大小时,控件自动把余下的部分分割为新的文件,新文
件的文件名由 NameRule 属性来指定。如果你不希望控件把你的文件分割成多个
文件,你只要简单的把这个属性的值设置的相当大,以至于你的文件不可能达到
这个值的大小就可以了。默认的 MaxSize 属性的值为20MB。

NameRule

NameRule 属性是一个决定控件怎样命名输出的CAB文件的字符型值。这个属性接
受4个不同的值:"NNN", "NNX", "NXN", "XNN"。‘N’指定在 FirstName 和 Su
rName 属性中的值将被放在那里,X是一个简单的指定这是第几个文件的数字。举
例来说,如果NameRule 为 "NXN", FirstName 为 "TEST", 同时 SurName 为 ".
CAB",那么生成的第一个文件将会取名为test1.cab,第二个为test2.cab等等。
如果 NameRule 为 "NNN",那么控件只是简单的把 FirstName 和 SurName 的值
加在一起形成CAB文件的文件名。如果你使用 NameRule 为 "NNN"的设置,请注意
把 MaxSize设置的足够大,以防止控件分割生成新的文件。

SetID

SetID是一个整形值,它被放在每个文件中作为一种标识符。这个数字序列号将
被放在每个文件中。你可以让它继续保持默认的0或者使用你自己的序列号,这些
都是无关紧要的东西。

SurName

SurName 是一个字符型值。除了它定义的是输出文件名的最后一部分外,它的作
用与 FirstName 属性非常相似。

FCI方法:

FCI控件通过三个方法来真正的实现压缩并建立CAB文件的操作。

CreateCab
AddFile
CloseCab

CreateCab

VB: CreateCab( ) as Boolean

这个方法用来初始化压缩引擎。它不需要参数并且返回一个布尔型值以指出初始
化是否成功。在你使用其它两个方法的任何一个之前,你必须先调用这个方法。
如果它返回 false,那么就说明压缩引擎初始化失败,继续调用其它两个方法将
会导致不可预知的错误。在调用这个方法之前,你必须确定所有的属性设置是否
正确。

AddFile


VB: AddFile(sourceFile as String, destFile as String, compType as Inte
ger) as Boolean


使用这个方法来添加一个文件到你的CAB文件。这个方法返回一个布尔型值来告
诉你操作是否成功。第一个参数 sourceFile 用来告诉函数要添加的文件名(包
含路径信息)。第二个参数destFile用来指定添加到那个CAB文件中,除了路径信
息,它与 sourceFile 几乎是一样的。最后一个参数 compType 用以在压缩源文
件时指定控件使用哪一种压缩方案。这个控件目前支持三种压缩方案。第一种,
我想不压缩文件是较容易理解的。如果你不想压缩文件,只要简单的给这个方法
传递一个comType的值为0的参数。第二种,MSZIP 是一种容易使用并具有相当高
的压缩率的方案。要使用 MSZIP 的方案,给方法传递一个 comType的值为1的参
数。第三种方案LZX有些难以理解,但你将会经常使用这种最高压缩率的文档。为
了使用它,请将 compType 看作一种字符串掩码(word bitmask)(一个字符串是
16位的,或者2字节。)第一个字节指定压缩窗口(我不准备解释压缩窗口是怎么
工作的,你只要知道使用什么值可以使你获得最大的压缩比就可以了)。最后一
个字节经常为3。第一个字节必须在0F-15(这当然是二进制值)的范围里。所以总
的来说,如果你使用LZX格式,你可以传递6个不同的值来决定不同的压缩比: 0
F03, 1003, 1103, 1203, 1303, 1403, 和 1503。


CloseCab


VB: CloseCab() as Boolean


这个方法用来释放压缩引擎使用的任何资源并结束未完成的磁盘I/O操作。如果
  你结束了添加文件到CAB压缩包中并且 CreateCab 方法完成了任务,最后总是
会调用 CloseCab 方法。如果  CreateCab 方法失败了,那么 CloseCab 方法将
不会被调用。

FDI预览

FDI(文间解压缩界面)通过它的方法单独执行。这个控件的共享版本包含一个
属性 decompMB。这个属性告诉你你已经使用了分配给你的50MB中的多少。一旦这
个数字达到了50MB,这个控件将停止工作。如果你想看一个怎么使用这个控件的
演示,你可以从下载。

FDI Methods

FDI控件通过5各方法来执行任务:ExtractCab, OpenCab, EnumContents, Extr
actFile, 和 CloseCab 方法。下面是对每个方法的解释。

ExtractCab
OpenCab
EnumContents
ExtractFile
CloseCab

ExtractCab


VB: ExtractCab(cabName as String, srcPath as String, destPath as Strin
g) as Boolean

这个ExtractCab方法被用来快速而简单的解压缩CAB文件。这个函数的优点是容
易使用,如果你只是简单的想要从CAB压缩包中把所有文件都解压出来的话。你不
需要为打开和关闭CAB压缩包而担心,你也不需要知道在压缩包中的某个文件名。
不利的是,这个控件不够灵活。如果你不打算把压缩包中的所有文件解压出来,
你必须使用其它的方法。这个方法执行成功后返回一个True,失败则返回false。
它需要三个不同的参数。第一个,cabName是一个告诉控件你想要解压哪个CAB文
件的字符串;第二个参数srcPath告诉控件要解压的CAB文件放在哪里;第三个参
数 destPath 告诉控件解压后的文件将放在哪里。

OpenCab

VB: OpenCab(CabPath as String, cabName as String) as Boolean


这个方法用来打开CAB文件以供 EnumContent 和 ExtractFile 对之进行操作。
如果OpenCab文件操作成功返回True,那么在你完成对压缩包的操作后,应该用C
loseCab方法来释放资源。这个方法接收两个参数,CabPath 参数用来告诉控件C
AB压缩包在哪里,而 cabName 参数告诉控件要解压的CAB文件的名字。


EnumContents


VB: EnumContents() as String
 
这个方法列举在当前打开的CAB压缩包中的所有文件。这个方法不需要参数,它
返回一个包含压缩包中所有文件名的字符串,各个文件名之间用Null值(char(0)
)分隔。例子可以查看 FDIDEMO.ZIP 。

ExtractFile


VB: ExtractFile(sourceName as String, destName as String, destPath as 
String) as Boolean

这个方法从当前打开的CAB压缩包中解压出一个文件。如果操作失败,这个方法
返回一个false,反之,则返回True。它接收三个参数,sourcePath 是在打开的
CAB压缩包中的你要解压的文件名;destName 是解压后的文件名;destPath 是解
压后的文件所在的路径。


CloseCab


VB: CloseCab() as Boolean

这个方法只是简单的关闭已被打开的CAB压缩包。它不需要参数,如果操作失败
,这个方法返回一个false,反之,则返回True。



**********************************************************************
********

foxer资料站保留所有的权利,如欲转载或出版,请与我联系:[email protected]


--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 61.130.72.73]

[关闭][返回]