線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:395
推到 Plurk!
推到 Facebook!

System.zip floder的壓縮問題

答題得分者是:RootKit
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-07-28 09:55:05 IP:118.169.xxx.xxx 未訂閱
請問各位:

目前我正在移植舊系統程式, 其中有一支是進行zip 壓縮的功能, 以前使用的是 3'rd party, 想說 XE2 以後已內建 System.zip 模式, 所以嘗試改用此元件, 也成功壓縮(其實指定還蠻簡單, google一下大神就有不少討論),
但現遭遇一個問題, 我找不到該如何將檔案夾名稱寫入到 zip 之中

一般的 zip 或 rar 可以在檔案中建立一個 資料夾, 然後把檔案壓到這個 floder 中, 如此我就可以在同一個檔案中備份不同路徑但相同檔案的做法, 可是我找了好幾天, System.zip 除了 ZipDirectoryContents 這支procedure 可以將整個路徑下檔案壓到 zip file 中外, 其他就沒有了, 所以想請教各位, 不知道有沒有可提供的資訊?

感恩~~
RootKit
資深會員


發表:16
回覆:357
積分:419
註冊:2008-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2017-08-07 23:56:30 IP:60.250.xxx.xxx 未訂閱
沒用過 System.zip 仍用 D7 VCLZIP 
看一下程式碼很好理解。大概如此

var
Z : TZipFile;
begin
Z := TZipFile.Create;
Try
Z.Open('D:\ZZ.zip', zmWrite);
Z.Add('E:\BurnCD\檔案說明.txt','ABC\檔案\檔案說明.txt');
Finally
Z.Free;
End;
end;
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2017-08-08 01:10:15 IP:118.160.xxx.xxx 未訂閱
與 system.zip 的做法大致都一樣,
利用 add 加入的 zipfile, 不會帶路徑(純壓檔而已),
而我目前的需求是必須能把 floder 名稱給壓進去, 然後在這個 floder下再進行 add 動作
以前利用 delphi5年代的三方控制(zip32.dll) 可以做到
這樣我就可以在不同的 floder 下加入 "相同的檔名" 檔案
但因為 zip32 使用了 memorystream的做法, 在xe的unicode環境下無法通過編譯, 我也不會改,. 又不想使用太多控件, 日後xe昇級都很麻煩, 所以研究 system.zip 做法, 覺得也不難實現, 但就是這個東東, 找遍網路都沒發現...
===================引 用 RootKit 文 章===================
沒用過 System.zip 仍用 D7 VCLZIP
看一下程式碼很好理解。大概如此

var
Z : TZipFile;
begin
Z := TZipFile.Create;
Try
Z.Open('D:\ZZ.zip', zmWrite);
Z.Add('E:\BurnCD\檔案說明.txt','ABC\檔案\檔案說明.txt');
Finally
Z.Free;
End;
end;
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2017-08-09 09:21:14 IP:59.120.xxx.xxx 未訂閱
請問,您的問題是:
  1. 已有壓縮檔,要在該壓縮檔自由建立資料夾並放入檔案壓縮
  2. 連同 root 目錄一起壓縮,如: C:\aaa\a.txt,在壓縮檔內也可以看到 aaa 這個目錄

還是我的理解錯誤,不屬於以上的問題?
RootKit
資深會員


發表:16
回覆:357
積分:419
註冊:2008-01-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2017-08-11 05:06:13 IP:60.250.xxx.xxx 未訂閱
Z.Add('E:\BurnCD\檔案說明.txt','ABC\檔案\檔案說明.txt');
後面就是對應壓縮檔內虛擬 Folder 路徑

除非要建立空的資料夾。

P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2017-08-13 22:13:55 IP:1.173.xxx.xxx 未訂閱
我要的是第1種
===================引 用 GrandRURU 文 章===================
請問,您的問題是:
  1. 已有壓縮檔,要在該壓縮檔自由建立資料夾並放入檔案壓縮
  2. 連同 root 目錄一起壓縮,如: C:\aaa\a.txt,在壓縮檔內也可以看到 aaa 這個目錄

還是我的理解錯誤,不屬於以上的問題?
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2017-08-13 22:37:11 IP:1.173.xxx.xxx 未訂閱
測試了 RootKit大大的做法, 可以達到一部份效果, 有點像RuRu大大提到的第2種,
壓縮後在winrar內看到是整個 D: 或 C: 的路徑, 解開後才會真正還原成原來的路徑 例如
我原來壓縮的 D:\123\mytext.txt
不過我想要的是RuRu大大的第一種
可以壓縮一個空的目錄進去, 然後在這個目錄內可以加入檔案
例如
[123] <--- 目錄
mytext.txt
[456] <-- 目錄
mytext.txt

不知道 System.Zip 做不做得到?
===================引 用 RootKit 文 章===================
Z.Add('E:\BurnCD\檔案說明.txt','ABC\檔案\檔案說明.txt');
後面就是對應壓縮檔內虛擬 Folder 路徑

除非要建立空的資料夾。

RootKit
資深會員


發表:16
回覆:357
積分:419
註冊:2008-01-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2017-08-16 13:32:26 IP:60.250.xxx.xxx 未訂閱
Z.Add('D:\123\mytext.txt','123\mytext.txt');
Z.Add('D:\123\mytext.txt','456\mytext.txt');

不懂。ZIP 資料料結構很單純。所以偵結點?
我要回火星。
===================引 用 P.D. 文 章===================
測試了 RootKit大大的做法, 可以達到一部份效果, 有點像RuRu大大提到的第2種,
壓縮後在winrar內看到是整個 D: 或 C: 的路徑, 解開後才會真正還原成原來的路徑 例如
我原來壓縮的 D:\123\mytext.txt
不過我想要的是RuRu大大的第一種
可以壓縮一個空的目錄進去, 然後在這個目錄內可以加入檔案
例如
[123] <--- 目錄
mytext.txt
[456] <-- 目錄
mytext.txt

不知道 System.Zip 做不做得到?
===================引 用 RootKit 文 章===================
Z.Add('E:\BurnCD\檔案說明.txt','ABC\檔案\檔案說明.txt');
後面就是對應壓縮檔內虛擬 Folder 路徑

除非要建立空的資料夾。
編輯記錄
RootKit 重新編輯於 2017-08-16 13:33:07, 註解 無‧
RootKit 重新編輯於 2017-08-16 13:33:53, 註解 無‧
RootKit 重新編輯於 2017-08-16 13:34:39, 註解 無‧
RootKit 重新編輯於 2017-08-16 13:36:17, 註解 無‧
RootKit 重新編輯於 2017-08-16 13:37:17, 註解 無‧
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2017-08-16 15:48:18 IP:111.242.xxx.xxx 未訂閱
啊! 終於懂我的問題出在那裡, 因為我一直把 磁碟路徑完整壓進來, 例如
c:\mydata\123\data, 所以才會造成上面所產生的結果, 再看 RootKit大大的提示, 改為
mydata\123\data (移除 c:\), 就達成了,
不好意思, 我離開地球太久, 所以忽略這麼重要的關鍵點,
RootKit大大回火星前, 再接受一次我由衷的感謝啦!
===================引 用 RootKit 文 章=================== Z.Add('D:\123\mytext.txt','123\mytext.txt');
Z.Add('D:\123\mytext.txt','456\mytext.txt');

不懂。ZIP 資料料結構很單純。所以偵結點?
我要回火星。

系統時間:2017-10-23 3:08:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!