我的程式原來在pb9下開發的,壓縮解壓縮都用了很多年,最近升級到pb12卻出現解壓失敗回傳-3
這可讓我撓頭啊,有沒有碰見過的并得出解決辦法的。
uj5u.com熱心網友回復:
自己搞定了,pb9和pb12單位元組和雙位元組,我這么認為的。我在壓縮的時候,在壓縮目標blob的前面分別增加壓縮前的長度和壓縮后的長度,解壓時需要截掉非內容:
1.對于pb9,壓縮前的長度占4個位元組,壓縮后的長度占4個位元組,也就說解壓時從第9個位元組開始獲取壓縮后的內容以便解壓。
2.對于pb12,壓縮前的長度占8個位元組,壓縮后的長度占8個位元組,也就說解壓時從第17個位元組開始獲取壓縮后的內容以便解壓。
又得改不少內容。
uj5u.com熱心網友回復:
問題的根本原因找到了。在呼叫compress和uncompress函式之前,對目標blob變數初始化時使用lbl_des = blob(space(ll_DestLen),EncodingANSI!),注意編碼是EncodingANSI!,對BLOB變數的任何操作都要使用這個編碼。
否則所有內容都雙份。
uj5u.com熱心網友回復:
你應該用zlib的新版本zlibwapi.dll,這個就沒關系。相關代碼:
// allocate buffer space
lul_srclen = Len(ablob_source)
lul_destlen = (lul_srclen * 1.01) + 12 // zlib needs a little extra room
lblob_dest = Blob(Space(lul_destlen))
// compress the blob
li_rc = compress(lblob_dest, lul_destlen, ablob_source, lul_srclen)
uj5u.com熱心網友回復:
不行了,在window xp,2k,vista 都行了,但在win 7不行,報錯參考失敗。頭大了。
你應該用zlib的新版本zlibwapi.dll,如何使用啊
uj5u.com熱心網友回復:
搞定了,win7環境下需要把zlibwapi.dll放在windowS\system32下就行。
xp 2k等放在當前目錄就行(當然是用DLL之前要設定當前路徑)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/70846.html
標籤:API 調用
