Страница: 1 |
Страница: 1 |
Вопрос: Integer
Добавлено: 03.05.07 23:18
Автор вопроса: Gogic
Как преобразовать бинарный массив (Byte) в массив интеджеров (2-байтовый), размерность которого будет соответственно в 2 раза меньше?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #1
Добавлено: 03.05.07 23:33
Это делается через указатели, ну я толком не знаю как ими пользоватся.
Номер ответа: 2
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #2
Добавлено: 03.05.07 23:56
Ураааааа работает!!! Хотя я за основу взял чужой код но я его доделал для твойей задачи
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Sub Command1_Click()
Dim a(1 To 20) As Byte
Dim b(1 To 10) As Integer
a(20) = &HFF
CopyMemory ByVal VarPtr(b(1)), ByVal VarPtr(a(1)), 20 ' 20 = razmer masiva v bajrax
MsgBox b(10)
End Sub
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 04.05.07 00:08
Нуу, есть два метода - прямой и извратный.
1) Скопимеморить байтовый массив в интовый
2) Создать пустой интовый массив, а затем в его структуре SAFEARRAY подменить указатель на данные и размерности
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 04.05.07 03:21
имхо intel-DX не умеет брать указатель массива
http://www.vbnet.ru/articles/Showarticle.aspx?id=205
Чтобы взять указатель на массив надо юзать
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 04.05.07 04:03
хм.. :\ Или можно, и мне просто пора спать?
Номер ответа: 6
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #6
Добавлено: 04.05.07 08:47
Можно и без VarPtr
результат будет тот же, при условии, что CopyMemory объявлена как
(pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Номер ответа: 7
Автор ответа:
Gogic
Вопросов: 38
Ответов: 121
Профиль | | #7
Добавлено: 04.05.07 18:17
Спасибо, работает и без объявления указателей, и с объявлением тоже работает.
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 04.05.07 19:22
Тебе пора спать, банальному CopyMemory нужны только данные, а не SAFEARRAY