加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

zlib vb操作类1

发布时间:2020-12-17 07:43:48 所属栏目:百科 来源:网络整理
导读:vb 操作zlib需要stdcall 的dll,所以dll不对就会出错。 简单版本 Option Explicit Public Const Z_OK = 0 ' Compression levels Public Const Z_NO_COMPRESSION As Long = 0 Public Const Z_BEST_SPEED As Long = 1 Public Const Z_BEST_COMPRESSION As Long

vb 操作zlib需要stdcall 的dll,所以dll不对就会出错。

简单版本

Option Explicit


Public Const Z_OK = 0

' Compression levels
Public Const Z_NO_COMPRESSION As Long = 0
Public Const Z_BEST_SPEED As Long = 1
Public Const Z_BEST_COMPRESSION As Long = 9
Public Const Z_DEFAULT_COMPRESSION As Long = (-1)


Public Declare Function compress Lib "zlib.dll" (ByVal dest As Long,ByRef destLen As Long,ByVal Source As Long,ByVal sourceLen As Long) As Long
Public Declare Function compress2 Lib "zlib.dll" (ByVal dest As Long,ByVal sourceLen As Long,ByVal level As Long) As Long

Public Declare Function compressBound Lib "zlib.dll" (ByVal sourceLen As Long) As Long
Public Declare Function uncompress Lib "zlib.dll" (ByVal dest As Long,ByVal sourceLen As Long) As Long

'ZEXTERN int ZEXPORT compress OF((Bytef *dest,uLongf *destLen,
' const Bytef *source,uLong sourceLen));
'压缩
Public Function ZLIB_Compress(bIn() As Byte,bOut() As Byte) As Long
' On Error Resume Next
    Dim bSize As Long
    Dim lngInSize As Long
    Dim lngOutSize As Long

    Dim ret As Long
    lngInSize = UBound(bIn) + 1
' MsgBox compressBound(lngInSize)
    lngOutSize = (lngInSize * 1.01) + 12
'MsgBox lngOutSize
    ReDim bOut(lngOutSize - 1) As Byte

    ret = compress(VarPtr(bOut(0)),VarPtr(lngOutSize),VarPtr(bIn(0)),lngInSize)
' Debug.Print ret
    ReDim Preserve bOut(lngOutSize - 1)
    ZLIB_Compress = lngOutSize



End Function

'解压缩数组
Public Function ZLIB_UnCompress(bIn() As Byte,bOut() As Byte) As Long
' On Error Resume Next
    Dim bSize As Long
    Dim lngInSize As Long
    Dim lngOutSize As Long

    Dim ret As Long
    lngInSize = UBound(bIn) + 1
    lngOutSize = (lngInSize * 15.01) + 12
    ReDim bOut(lngOutSize - 1) As Byte

' ret = uncompress(0&,VarPtr(bIn(0)),lngInSize)
' Debug.Print ret
    ret = uncompress(VarPtr(bOut(0)),lngOutSize,lngInSize)
    Debug.Print ret
    If ret = 0 Then
        ReDim Preserve bOut(lngOutSize - 1)
        ZLIB_UnCompress = lngOutSize
    Else
        ReDim Preserve bOut(0)
    End If
End Function

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读