powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передача массива в DLL
8 сообщений из 8, страница 1 из 1
Передача массива в DLL
    #39467673
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Темы такие тут были, но вразумительного ответ так и нет.
Меня интересует как передать массив из VB в DLL по ссылке. Передаются нули.
Т.е. не является ли переменная массива, в VB, уже указателем на память? Такое подозрение возникло из-за того, что если обернуть массив в структуру, то все передается нормально, ну почти )))
...
Рейтинг: 0 / 0
Передача массива в DLL
    #39467698
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внезапно любая переменная является указателем на память.
...
Рейтинг: 0 / 0
Передача массива в DLL
    #39467719
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это самособой, но по адресу в который разименовывается компилятором переменная, лежит не значение а адрес. Вот что называется указателем.
...
Рейтинг: 0 / 0
Передача массива в DLL
    #39467750
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот нашел

авторЭта статья предполагает, что вы знакомы с функциями Get/PutMem и принципом получения параметров по их смещению с стеке (Подробнее здесь: VF-VB-002122).
Все массивы в VB являются SAFEARRAY. SAFEARRAY - это такая структура, которая описывает размерности массива, тип содержащихся данных и место, где эти данные находятся. Хранится всё это тремя кусками:
существует переменная длиной 4 байта, содержащая адрес структуры SAFEARRAY (указатель на указатель)
существует сама структура SAFEARRAY (именно по тому самому адресу), размер разный
существуют данные массива (в третьем месте - на него указывает член pvData структуры SAFEARRAY).

https://ru.vingrad.com/Sushchnost-massivov-v-Visual-Basic-id50bb3a5a6ccc19b037026a26
...
Рейтинг: 0 / 0
Передача массива в DLL
    #39467778
8235627
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DesWind,

столь же внезапно VarPtr(A(LBound(A))) даст адрес первого элемента массива A. То бишь, адрес массива.
...
Рейтинг: 0 / 0
Передача массива в DLL
    #39467852
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8235627,

Ну это уже танцы с бубном. специфичные для языка. Меня интересовало, что представляет из себя массив в VB.
...
Рейтинг: 0 / 0
Передача массива в DLL
    #39467859
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8235627,

Но за подсказку, как получить адрес непосредственно массива спасибо.
...
Рейтинг: 0 / 0
Передача массива в DLL
    #39467870
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VB DLL обычно используется параметр типа Variant для передачи таких значений
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передача массива в DLL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]