|
Передача массива в DLL
|
|||
---|---|---|---|
#18+
Темы такие тут были, но вразумительного ответ так и нет. Меня интересует как передать массив из VB в DLL по ссылке. Передаются нули. Т.е. не является ли переменная массива, в VB, уже указателем на память? Такое подозрение возникло из-за того, что если обернуть массив в структуру, то все передается нормально, ну почти ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2017, 11:36 |
|
Передача массива в DLL
|
|||
---|---|---|---|
#18+
Внезапно любая переменная является указателем на память. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2017, 11:53 |
|
Передача массива в DLL
|
|||
---|---|---|---|
#18+
Это самособой, но по адресу в который разименовывается компилятором переменная, лежит не значение а адрес. Вот что называется указателем. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2017, 12:09 |
|
Передача массива в DLL
|
|||
---|---|---|---|
#18+
Вот нашел авторЭта статья предполагает, что вы знакомы с функциями Get/PutMem и принципом получения параметров по их смещению с стеке (Подробнее здесь: VF-VB-002122). Все массивы в VB являются SAFEARRAY. SAFEARRAY - это такая структура, которая описывает размерности массива, тип содержащихся данных и место, где эти данные находятся. Хранится всё это тремя кусками: существует переменная длиной 4 байта, содержащая адрес структуры SAFEARRAY (указатель на указатель) существует сама структура SAFEARRAY (именно по тому самому адресу), размер разный существуют данные массива (в третьем месте - на него указывает член pvData структуры SAFEARRAY). https://ru.vingrad.com/Sushchnost-massivov-v-Visual-Basic-id50bb3a5a6ccc19b037026a26 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2017, 12:35 |
|
Передача массива в DLL
|
|||
---|---|---|---|
#18+
DesWind, столь же внезапно VarPtr(A(LBound(A))) даст адрес первого элемента массива A. То бишь, адрес массива. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2017, 12:58 |
|
Передача массива в DLL
|
|||
---|---|---|---|
#18+
8235627, Ну это уже танцы с бубном. специфичные для языка. Меня интересовало, что представляет из себя массив в VB. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2017, 14:28 |
|
Передача массива в DLL
|
|||
---|---|---|---|
#18+
8235627, Но за подсказку, как получить адрес непосредственно массива спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2017, 14:36 |
|
|
start [/forum/topic.php?fid=60&fpage=15&tid=2155263]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
20ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 112ms |
0 / 0 |