我剛剛遇到了 Delphi 中一個令人討厭的限制。
我的存檔中有 117,898 個檔案(它們都是 256x256 JPEG 影像,因此沒有 ZIP 壓縮存盤 - ZIP 只是一種傳遞機制)
無論如何,我剛剛從我以前的 ZIP(有 24,989 張影像)升級到新的 ZIP,它停在 65536 個檔案(即索引 = 65535)然后我出現范圍錯誤。
因此,TZip 似乎是 16 位的(或者我正在做一些非常愚蠢的事情)
我剛剛發現 Delphi 11 支持 64 位 - 但這也僅限于 64k 檔案
uj5u.com熱心網友回復:
這不是令人討厭的 Delphi 限制,而是 ZIP 規范的限制,如下所示:APPNOTE.TXT
在 4.3.16 節中,中央目錄中的條目總數只有 2 個位元組。
uj5u.com熱心網友回復:
這不是令人討厭的 Delphi 限制,而是 ZIP 規范的限制,如下所示:APPNOTE.TXT
在 4.3.16 節中,中央目錄中的條目總數只有 2 個位元組。
在 Zip 規范的原始版本中,zip 存檔中的檔案數量確實有 2 個位元組的限制,但這已經被取代了很長時間。下面如果來自APPNOTE.TXT版本 6.3.9
4.4.21 total number of entries in the central dir on
this disk: (2 bytes)
The number of central directory entries on this disk.
If an archive is in ZIP64 format and the value in
this field is 0xFFFF, the size will be in the
corresponding 8 byte zip64 end of central
directory field.
如果 Delphi TZip 支持 Zip64 規范,它應該能夠存盤超過 64k 的檔案。鑒于你的經驗,我懷疑它沒有
[編輯]
由 Remy Lebeau 提供的關于更新的鏈接TZipFile,在這里,說明了對 Zip64 的支持
RTL: TZipFile
... We added support for Zip64 and ... works with files larger in size than 4 GB.
雖然它確實提到了對 的支持Zip64,但它沒有明確提到對超過 64k 檔案的支持。
uj5u.com熱心網友回復:
我寫了一個小測驗程式,它在一個 zip 檔案中創建了 70,000 個 1 位元組的檔案。Delphi 11.2 成功創建了 zip 檔案中的 70,000 個檔案。在測驗程式中,我還讓它讀取了已創建的檔案。它成功讀取了 70,000 個 1 位元組檔案。
我查看了 Delphi 11 的 system.zip 中的差異,雖然有一些變化......我認為這不會影響處理 zip 中的大量檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/509894.html
標籤:德尔福压缩
上一篇:禁用面板上的所有物件/組件
