System.zip floder的壓縮問題 |
答題得分者是:RootKit
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
請問各位:
目前我正在移植舊系統程式, 其中有一支是進行zip 壓縮的功能, 以前使用的是 3'rd party, 想說 XE2 以後已內建 System.zip 模式, 所以嘗試改用此元件, 也成功壓縮(其實指定還蠻簡單, google一下大神就有不少討論), 但現遭遇一個問題, 我找不到該如何將檔案夾名稱寫入到 zip 之中 一般的 zip 或 rar 可以在檔案中建立一個 資料夾, 然後把檔案壓到這個 floder 中, 如此我就可以在同一個檔案中備份不同路徑但相同檔案的做法, 可是我找了好幾天, System.zip 除了 ZipDirectoryContents 這支procedure 可以將整個路徑下檔案壓到 zip file 中外, 其他就沒有了, 所以想請教各位, 不知道有沒有可提供的資訊? 感恩~~ |
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
與 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
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
測試了 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 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
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 路徑 除非要建立空的資料夾。 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
啊! 終於懂我的問題出在那裡, 因為我一直把 磁碟路徑完整壓進來, 例如
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 資料料結構很單純。所以偵結點? 我要回火星。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |