Страница: 1 |
Страница: 1 |
Вопрос: Adler32
Добавлено: 15.04.05 03:11
Автор вопроса: Sergey | Web-сайт:
Кто подскажет, как в VB объявить функцию Adler32 из zlib.dll (считает контрольную сумму) и как ею пользоваться? На сайте http://www.zlib.net/manual.html она описана только для СИ и объявляется так:
uLong adler32 (uLong adler, const Bytef *buf, uInt len);
У меня массив байт. Объявил в проекте
Private Declare Function adler32 Lib "zlib1.dll" _
(adler As Long, buf As Any, lenbuf As Long) As Long и пытаюсь подсчитать сумму так:
tm& = adler32(n&, bt(0), ubound(bt)+1)
Вылетаю. Что не пробовал, все равно вылетаю (ошибка защиты).
Помогите, плз!
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 15.04.05 21:14
1) Первый и третий аргумент надо передавать по значению (ByVal)
2) Вот так работает (не ручаюсь, что верно)
Private Declare Function adler32 Lib "zlib.dll" (ByVal adler As Long, ByVal buf As Long, ByVal lenbuf As Long) As Long
Private Sub Command1_Click()
 im adler As Long
 im bt(100) As Byte
For i = 0 To 100
bt(i) = i
Next
adler = adler32(0, 0, 0)
adler = adler32(adler, VarPtr(bt(0)), 101)
MsgBox adler
End Sub
Номер ответа: 2
Автор ответа:
Sergey
Вопросов: 1
Ответов: 1
Web-сайт:
Профиль | | #2
Добавлено: 16.04.05 19:29
Спасибо, заработало.