2013-07-27 24 views
-3

此代碼使用:TArchiveEntry;
那麼,我真的懷疑這不是來自Zlib單位?因爲TArchiveEntry可以使用沒有聲明Zlib單位。文件壓縮功能它們來自哪裏

var AE : TArchiveEntry; 

AE.EntryType := aeFile; 
AE.FileNameLen := Length(sr.Name); 
AE.FileLength := sr.Size; 
OutStream.Write(AE, SizeOf(AE)); 
OutStream.Write(sr.Name[1], Length(sr.Name)); 
// Write the file itself 
TmpStream := TFileStream.Create(ADir + sr.Name, fmOpenRead or fmShareDenyWrite); 
OutStream.CopyFrom(TmpStream, TmpStream.Size); 
TmpStream.Free; 

這是的Zlib股,毫無疑問。

var compr : TZCompressionStream; 

for i := 0 to zFiles.Count-1 do 
begin 
    compr := TZCompressionStream.Create(mStream, zcDefault); 
    compr.CopyFrom(infile,c); 
    compr.Free; 
end; 

我不知道爲什麼,有什麼區別?我無法弄清楚,幾乎都有同樣的表現。

+0

問題是什麼?你問蘋果和橘子有什麼區別? –

+0

你好,我問這兩種壓縮方法有什麼區別,這個TArchiveEntry來自何處(什麼單位),因爲我無法在delphi的任何資源代碼中找到它,但是當我用它的罰款。謝謝 – XXXXXXXXXXXXXX

回答

5

System.ZLib單位(或System.Zip單位,對此)沒有TArchiveEntry類型。第一代碼片段顯示您是代碼從舊的新聞組定義片段上方自身的TArchiveEntry類型直接複製/粘貼複製:

Re: How to use ZLib to zip up a folder in Delphi 2005???

+0

是的,我知道Zlib或ZlibEx單元中沒有TArchiveEntry,所以這個TArchiveEntry來自哪個單元?謝謝 – XXXXXXXXXXXXXX

+0

我很抱歉,我弄明白了,我不知道TArchiveEntry只是一個(類型打包記錄)調用,並且用於組合或混合文件,畢竟不是壓縮。謝謝,抱歉。 – XXXXXXXXXXXXXX

+0

謝謝,我不會使用TArchiveEntry壓縮或合併任何文件夾的文件,如果我使用它,它會減慢壓縮時間,因爲TArchiveEntry首先在文件中組合文件字節需要花費一些時間來處理大文件,我會嘗試直接用Zlib壓縮文件夾和文件,找到它。 – XXXXXXXXXXXXXX

1

這個問題似乎是:

如何確定符號在哪個單元中定義?

編譯完項目後,將光標懸停在該符號上,IDE將顯示一個提示,命名符號被定義的單元。

或者,使用CTRL +單擊以打開在編輯器中聲明符號的單位。

+0

謝謝,它有幫助。 – XXXXXXXXXXXXXX