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