pb中的压缩

fanbo 2007-08-30 06:20:49
看来PB的人气真的不行了,不过俺没办法,还在用而且最近还总是出问题!
问题描述:
我的项目里面需要将n个.xml文件压缩成一个.zip文件。我可以通过run的方法调用winrar或者winzip实现!方法如下:Run("c:\program files\winrar\Winrar a E:\xml.rar E:\*.xml")。可是这个方法局限性过于大。必须安装WinRar!我考虑用zlib.dll,我在pb9中实现过这个功能,可是现在移植到了pb10中就出现了问题。报错内容如下:Error to open DLL library ZLIB.DLL for exteral function at line 10 in function of_compress of object nov_cst_zlib!不知道,那位高手可以有好的办法!但愿各位到访的老大别说什么网上有很多控件之类的废话了,有就给个详细点的说明。没有就顶顶就好!谢谢!
...全文
728 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzh2021 2011-07-11
  • 打赏
  • 举报
回复
好东西 收藏之
gdmcchen 2007-11-01
  • 打赏
  • 举报
回复
用myzip.dll对文件进行解压,但不能保留原有文件的路径。比如压缩文件里面还有好几个文件夹,用myzip.dll解压后,里面的文件夹就不能保留了,只有最顶层的文件夹。大家有没什么好办法?谢了!
AFIC 2007-09-03
  • 打赏
  • 举报
回复
声明的外部函数,全部要加上alias for '函数名;ansi'
例如
Function uint Foo(ref string lpFilename,ulong nSize) Library "xxx.dll"
改为
Function uint Foo(ref string lpFilename,ulong nSize) Library "xxx.dll" alias for 'Foo;ansi'
注意函数名大小写
fanbo 2007-09-03
  • 打赏
  • 举报
回复
自己顶一下
fanbo 2007-09-03
  • 打赏
  • 举报
回复
myzip的文件:
文件名:MyZip.dll

函 数:

**************************************************
*** ***
*** 压缩文件 ***
*** ***
**************************************************
1.
Function MyZip_AddFile(SrcFile,ZipFile:pchar):integer;stdcall;
功能 : 将文件SrcFile添加到压缩文档ZipFile
参数 : SrcFile 待压缩文件(全路径)
Zipfile 目标文件(全路径)
返回 : <0 失败
>0 成功
说明 : 同名文件将自动被替换(overwrite)
2.
Function MyZip_AddDirectory(SrcPath,ZipFile:pchar):integer;stdcall;
功能 : 将目录SrcPath里的所有文件(子目录)添加到压缩文档ZipFile
参数 : SrcPath 待压缩目录(全路径)

织梦网站管理系统真的好

Zipfile 目标文件(全路径)
返回 : <0 失败
>0 成功
说明 : 同名文件将自动被替换(overwrite)
**************************************************
*** ***
*** 解压缩文件 ***
*** ***
**************************************************
1.
Function MyZip_ExtractFileAll(ZipFile,PathName:pchar):integer;stdcall;
功能 : 将ZipFile中包含的所有文件解包到文件夹PathName
参数 : ZipFile 压缩文件(全路径)
PathName 文件输出路径(如果不存在,则自动创建该目录)
返回 : <0 失败
=0 压缩文件中未包含任何文件
>0 解包的文件数量
说明 : 同名文件将自动被替换(overwrite)
2.
Function MyZip_ExtractFile(ZipFile,srcName,DstName:pchar):integer;stdcall;
功能 : 从ZipFile中将由SrcName指定的文件解包到由DstName指定的目标文件
参数 : Zipfile 压缩文件(全路径) 织梦好,好织梦
SrcName 需要解包的文件(不包含路径)
DstName 目标文件(全路径)
返回 : <0 失败
=0 压缩文件中未包含SrcName
>0 成功
说明 : 同名文件将自动被替换(overwrite)
**************************************************
*** ***
*** 获取错误信息 ***
*** ***
**************************************************
1.
Function MyZip_GetLastError(out msg : ShortString):integer;stdcall;
功能 : 在压缩/解压的过程中,如有错误发生,可立即调用该函数获取相关错误信息,并由msg返回
参数 : msg 用于返回相关错误信息
返回 : <0 失败
>0 成功
fanbo 2007-09-03
  • 打赏
  • 举报
回复
分数不多,请两位谅解!我下面将问题解决的方法说一下!希望能给以后的人以帮助!
首先下载myzip.dll,将它放到程序的目录下。然后新建一个窗体,在该窗体的Local External Function的说明中加入,
Function ulong MyZip_AddFile(string SrcFile,string ZipFile) Library "MyZip.dll" ALIAS FOR "MyZip_AddFile;ansi"
Function ulong MyZip_ExtractFileAll(string ZipFile,string PathName) Library "MyZip.dll" ALIAS FOR "MyZip_ExtractFileAll;ansi"
FUNCTION integer MyZip_ExtractFile(string ZipFile,string srcName,string DstName) library "myzip.dll" alias for "MyZip_ExtractFile;Ansi"

在压缩的触发中加入,
//将文件的内容进行压缩
li_value = MyZip_AddFile(ls_LongFileName,ls_objectfile)
if li_value > 0 then
MessageBox("Good","Successful!")
else
MessageBox("Error","Failure!")
end if
两个参数分别为源文件路径和目标文件路径,都是绝对路径!
fanbo 2007-09-03
  • 打赏
  • 举报
回复
谢谢AFIC(A Fool In China)!!我的机器瘫痪了,我再测试一下,可以的话立刻放分,谢谢。
fanbo 2007-08-31
  • 打赏
  • 举报
回复
谢谢zjoy(joy) !的确是需要zip压缩的格式,因为另一端是linux + java的服务器端!
zjoy 2007-08-30
  • 打赏
  • 举报
回复
zlib.dll没用过,不知道什么问题

不过使用rar你可以把Rar.exe放在你的程序中,在调用的时候,用这个exe执行,

不过建议使用zip压缩

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧