annotate src/zlib-1.2.7/old/visual-basic.txt @ 23:619f715526df sv_v2.1

Update Vamp plugin SDK to 2.5
author Chris Cannam
date Thu, 09 May 2013 10:52:46 +0100
parents e13257ea84a4
children
rev   line source
Chris@4 1 See below some functions declarations for Visual Basic.
Chris@4 2
Chris@4 3 Frequently Asked Question:
Chris@4 4
Chris@4 5 Q: Each time I use the compress function I get the -5 error (not enough
Chris@4 6 room in the output buffer).
Chris@4 7
Chris@4 8 A: Make sure that the length of the compressed buffer is passed by
Chris@4 9 reference ("as any"), not by value ("as long"). Also check that
Chris@4 10 before the call of compress this length is equal to the total size of
Chris@4 11 the compressed buffer and not zero.
Chris@4 12
Chris@4 13
Chris@4 14 From: "Jon Caruana" <jon-net@usa.net>
Chris@4 15 Subject: Re: How to port zlib declares to vb?
Chris@4 16 Date: Mon, 28 Oct 1996 18:33:03 -0600
Chris@4 17
Chris@4 18 Got the answer! (I haven't had time to check this but it's what I got, and
Chris@4 19 looks correct):
Chris@4 20
Chris@4 21 He has the following routines working:
Chris@4 22 compress
Chris@4 23 uncompress
Chris@4 24 gzopen
Chris@4 25 gzwrite
Chris@4 26 gzread
Chris@4 27 gzclose
Chris@4 28
Chris@4 29 Declares follow: (Quoted from Carlos Rios <c_rios@sonda.cl>, in Vb4 form)
Chris@4 30
Chris@4 31 #If Win16 Then 'Use Win16 calls.
Chris@4 32 Declare Function compress Lib "ZLIB.DLL" (ByVal compr As
Chris@4 33 String, comprLen As Any, ByVal buf As String, ByVal buflen
Chris@4 34 As Long) As Integer
Chris@4 35 Declare Function uncompress Lib "ZLIB.DLL" (ByVal uncompr
Chris@4 36 As String, uncomprLen As Any, ByVal compr As String, ByVal
Chris@4 37 lcompr As Long) As Integer
Chris@4 38 Declare Function gzopen Lib "ZLIB.DLL" (ByVal filePath As
Chris@4 39 String, ByVal mode As String) As Long
Chris@4 40 Declare Function gzread Lib "ZLIB.DLL" (ByVal file As
Chris@4 41 Long, ByVal uncompr As String, ByVal uncomprLen As Integer)
Chris@4 42 As Integer
Chris@4 43 Declare Function gzwrite Lib "ZLIB.DLL" (ByVal file As
Chris@4 44 Long, ByVal uncompr As String, ByVal uncomprLen As Integer)
Chris@4 45 As Integer
Chris@4 46 Declare Function gzclose Lib "ZLIB.DLL" (ByVal file As
Chris@4 47 Long) As Integer
Chris@4 48 #Else
Chris@4 49 Declare Function compress Lib "ZLIB32.DLL"
Chris@4 50 (ByVal compr As String, comprLen As Any, ByVal buf As
Chris@4 51 String, ByVal buflen As Long) As Integer
Chris@4 52 Declare Function uncompress Lib "ZLIB32.DLL"
Chris@4 53 (ByVal uncompr As String, uncomprLen As Any, ByVal compr As
Chris@4 54 String, ByVal lcompr As Long) As Long
Chris@4 55 Declare Function gzopen Lib "ZLIB32.DLL"
Chris@4 56 (ByVal file As String, ByVal mode As String) As Long
Chris@4 57 Declare Function gzread Lib "ZLIB32.DLL"
Chris@4 58 (ByVal file As Long, ByVal uncompr As String, ByVal
Chris@4 59 uncomprLen As Long) As Long
Chris@4 60 Declare Function gzwrite Lib "ZLIB32.DLL"
Chris@4 61 (ByVal file As Long, ByVal uncompr As String, ByVal
Chris@4 62 uncomprLen As Long) As Long
Chris@4 63 Declare Function gzclose Lib "ZLIB32.DLL"
Chris@4 64 (ByVal file As Long) As Long
Chris@4 65 #End If
Chris@4 66
Chris@4 67 -Jon Caruana
Chris@4 68 jon-net@usa.net
Chris@4 69 Microsoft Sitebuilder Network Level 1 Member - HTML Writer's Guild Member
Chris@4 70
Chris@4 71
Chris@4 72 Here is another example from Michael <michael_borgsys@hotmail.com> that he
Chris@4 73 says conforms to the VB guidelines, and that solves the problem of not
Chris@4 74 knowing the uncompressed size by storing it at the end of the file:
Chris@4 75
Chris@4 76 'Calling the functions:
Chris@4 77 'bracket meaning: <parameter> [optional] {Range of possible values}
Chris@4 78 'Call subCompressFile(<path with filename to compress> [, <path with
Chris@4 79 filename to write to>, [level of compression {1..9}]])
Chris@4 80 'Call subUncompressFile(<path with filename to compress>)
Chris@4 81
Chris@4 82 Option Explicit
Chris@4 83 Private lngpvtPcnSml As Long 'Stores value for 'lngPercentSmaller'
Chris@4 84 Private Const SUCCESS As Long = 0
Chris@4 85 Private Const strFilExt As String = ".cpr"
Chris@4 86 Private Declare Function lngfncCpr Lib "zlib.dll" Alias "compress2" (ByRef
Chris@4 87 dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long,
Chris@4 88 ByVal level As Integer) As Long
Chris@4 89 Private Declare Function lngfncUcp Lib "zlib.dll" Alias "uncompress" (ByRef
Chris@4 90 dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long)
Chris@4 91 As Long
Chris@4 92
Chris@4 93 Public Sub subCompressFile(ByVal strargOriFilPth As String, Optional ByVal
Chris@4 94 strargCprFilPth As String, Optional ByVal intLvl As Integer = 9)
Chris@4 95 Dim strCprPth As String
Chris@4 96 Dim lngOriSiz As Long
Chris@4 97 Dim lngCprSiz As Long
Chris@4 98 Dim bytaryOri() As Byte
Chris@4 99 Dim bytaryCpr() As Byte
Chris@4 100 lngOriSiz = FileLen(strargOriFilPth)
Chris@4 101 ReDim bytaryOri(lngOriSiz - 1)
Chris@4 102 Open strargOriFilPth For Binary Access Read As #1
Chris@4 103 Get #1, , bytaryOri()
Chris@4 104 Close #1
Chris@4 105 strCprPth = IIf(strargCprFilPth = "", strargOriFilPth, strargCprFilPth)
Chris@4 106 'Select file path and name
Chris@4 107 strCprPth = strCprPth & IIf(Right(strCprPth, Len(strFilExt)) =
Chris@4 108 strFilExt, "", strFilExt) 'Add file extension if not exists
Chris@4 109 lngCprSiz = (lngOriSiz * 1.01) + 12 'Compression needs temporary a bit
Chris@4 110 more space then original file size
Chris@4 111 ReDim bytaryCpr(lngCprSiz - 1)
Chris@4 112 If lngfncCpr(bytaryCpr(0), lngCprSiz, bytaryOri(0), lngOriSiz, intLvl) =
Chris@4 113 SUCCESS Then
Chris@4 114 lngpvtPcnSml = (1# - (lngCprSiz / lngOriSiz)) * 100
Chris@4 115 ReDim Preserve bytaryCpr(lngCprSiz - 1)
Chris@4 116 Open strCprPth For Binary Access Write As #1
Chris@4 117 Put #1, , bytaryCpr()
Chris@4 118 Put #1, , lngOriSiz 'Add the the original size value to the end
Chris@4 119 (last 4 bytes)
Chris@4 120 Close #1
Chris@4 121 Else
Chris@4 122 MsgBox "Compression error"
Chris@4 123 End If
Chris@4 124 Erase bytaryCpr
Chris@4 125 Erase bytaryOri
Chris@4 126 End Sub
Chris@4 127
Chris@4 128 Public Sub subUncompressFile(ByVal strargFilPth As String)
Chris@4 129 Dim bytaryCpr() As Byte
Chris@4 130 Dim bytaryOri() As Byte
Chris@4 131 Dim lngOriSiz As Long
Chris@4 132 Dim lngCprSiz As Long
Chris@4 133 Dim strOriPth As String
Chris@4 134 lngCprSiz = FileLen(strargFilPth)
Chris@4 135 ReDim bytaryCpr(lngCprSiz - 1)
Chris@4 136 Open strargFilPth For Binary Access Read As #1
Chris@4 137 Get #1, , bytaryCpr()
Chris@4 138 Close #1
Chris@4 139 'Read the original file size value:
Chris@4 140 lngOriSiz = bytaryCpr(lngCprSiz - 1) * (2 ^ 24) _
Chris@4 141 + bytaryCpr(lngCprSiz - 2) * (2 ^ 16) _
Chris@4 142 + bytaryCpr(lngCprSiz - 3) * (2 ^ 8) _
Chris@4 143 + bytaryCpr(lngCprSiz - 4)
Chris@4 144 ReDim Preserve bytaryCpr(lngCprSiz - 5) 'Cut of the original size value
Chris@4 145 ReDim bytaryOri(lngOriSiz - 1)
Chris@4 146 If lngfncUcp(bytaryOri(0), lngOriSiz, bytaryCpr(0), lngCprSiz) = SUCCESS
Chris@4 147 Then
Chris@4 148 strOriPth = Left(strargFilPth, Len(strargFilPth) - Len(strFilExt))
Chris@4 149 Open strOriPth For Binary Access Write As #1
Chris@4 150 Put #1, , bytaryOri()
Chris@4 151 Close #1
Chris@4 152 Else
Chris@4 153 MsgBox "Uncompression error"
Chris@4 154 End If
Chris@4 155 Erase bytaryCpr
Chris@4 156 Erase bytaryOri
Chris@4 157 End Sub
Chris@4 158 Public Property Get lngPercentSmaller() As Long
Chris@4 159 lngPercentSmaller = lngpvtPcnSml
Chris@4 160 End Property