Skip to Content

BCB 處理 7z 壓縮格式

這次要把大正藏與卍續藏全部裝在一片 CD 中是一個蠻大的考驗。由於考慮到某些國家與地區不像台灣有高普及率的 DVD 光碟機,所以使用一般 640 M 的 CDR 是主要的考量,為了這個目的,先前就嘗試把 Zip 的壓縮格式換成 RAR 格式,而且採用緊密壓縮,果然省下許多空間,為此還特別去找支援 RAR 解壓縮的工具,花了一些時間才順利使用。

好景不常,在努力測試下,發現估計的容量是 620M,可是壓片廠老板曾說最好保持在 600M,才能保證資料不會因為太滿而流失,所以為這個原因,同仁又去找了 7z 的壓縮程式來試。

7z 的壓縮率果然更厲害,142 冊的經文壓縮起來硬是比 RAR 少了近 50M,如此一來一片裝光碟的理想就很有可能順利實現,但新的問題就是要改寫程式,又是花了一個下午,才把 7z 的格式搞定。

過去操作 zip 是用 http://www.drehoeksw.net/EZipBuilder.html 下載的 ZipBuilder 元件。

RAR 則是在這裡下載 http://www.rarlab.com/rar_add.htm "Unrar library for C++ Builder"。

這是自己寫的範例:

	#include "UnrarDll.h"
		
	RarDll *rar = new RarDll();
	// 這是直接解壓縮
	char *err = rar->Extract("T01.rar", "T01n0001_001.xml");	
	if (!err) rar->Expanded->SaveToFile("T01n0001_001.xml");
	delete rar;

至於今天學的 7z,原本是在這裡 http://www.7-zip.org/zh-tw/ 下載 LZMA 開發套件,不過試了半天卻沒什麼成果。

後來找到一個 Delphi 寫的示範程式,並從中得知主要是用一個大概是日本朋友寫的 7-zip32.dll,於是我去找到這東西,並且試著用 BCB 來操作它,花了一些時間研究,最後終於成功了。

測試過程中第一個遇到的問題是原始提供的 7-zip32.lib 似乎不被接受,所以我自己再產生一個就 OK 了。

Builder5\Bin>implib 7-zip32.lib 7-zip32.dll

第二個問題是相關的說明文件都是日文,這真的讓我一個頭二個大,我還特別去把這個可以日翻中的網頁找出來 http://www.excite.co.jp/world/chinese/ ,把一些說明逐步譯成中文,雖然譯的不好,但至少可以藉著前後文猜出一些東西來。

如此學了一陣,再加上參考 Delphi 的示範程式,也寫出簡單的示範程式

	#include "7-zip32.h"
	
	char a[100];	// 這個其實我不知道在做什麼?
	int b = 0;		// 這個其實我不知道在做什麼?
	SevenZip(Handle, "e T01.7z T01n0001_001.xml -r -y -hide",a, b);

原本在解壓縮時一直有一個進度的視窗,看了相關的 command 也不知如何消去,後來是看了 Delphi 的示範程式,才知道有 -hide 參數可以加入,終於隱藏進度的視窗。

至 a b 那二個參數,我實在不知道是做什麼用的,我就這樣亂試,至少暫時可以用了。 ^_^

回應

RE:讓BCB直接使用pas所產生的.HPP檔案來橋接

謝謝, 我對此不熟, 不過有機會會來試試. :)

謝謝版大 另外,也可以考慮讓BCB直接使用pas所產生的.

謝謝版大

另外,也可以考慮讓BCB直接使用pas所產生的.HPP檔案來橋接,會比較快一些些

給版大做個參考 ^ ^

7z Delphi 範例

Eden 你好, 

我的範例應該是這一個

http://cc.embarcadero.com/item/23303

您好,請問一下它的Delphi範例還有留著嗎? 最近我也正

您好,請問一下它的Delphi範例還有留著嗎?

最近我也正在找尋它的用法

還請版大不吝分享,感謝!

發表新回應

這個欄位的內容會保密,不會公開顯示。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。
  • 可使用的 HTML 標籤:<a> <address> <b> <blockquote> <br> <caption> <center> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <i> <img> <ins> <li> <ol> <p> <pre> <span> <strike> <strong> <sub> <sup> <table> <tbody> <td> <th> <tr> <u> <ul>
    Allowed Style properties: background, background-attachment, background-color, background-image, background-position, background-repeat, border, border-bottom, border-bottom-color, border-bottom-style, border-bottom-width, border-collapse, border-color, border-left, border-left-color, border-left-style, border-left-width, border-right, border-right-color, border-right-style, border-right-width, border-spacing, border-style, border-top, border-top-color, border-top-style, border-top-width, border-width, bottom, caption-side, clip, color, direction, empty-cells, font, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, height, left, letter-spacing, line-height, list-style, list-style-image, list-style-position, list-style-type, margin, margin-bottom, margin-left, margin-right, margin-top, max-height, max-width, min-height, min-width, overflow, padding, padding-bottom, padding-left, padding-right, padding-top, right, table-layout, text-align, text-decoration, text-indent, text-transform, top, unicode-bidi, vertical-align, white-space, width, word-spacing, z-index

更多關於格式選項的資訊

CAPTCHA
驗證碼只有阿拉伯數字, 這是躲廣告用的, 麻煩你輸入了.
Image CAPTCHA
Enter the characters shown in the image.


story | about seo