powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Any vs. Variant - в чем разница?
3 сообщений из 3, страница 1 из 1
Any vs. Variant - в чем разница?
    #32814245
Yuri Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Есть декларирование процедуры вида:
Declare Function PEConvertPFInfoToVInfo Lib "\Program Files\Common Files\Crystal Decisions\2.0\bin\crpe32.dll" ( ByVal Value As Any , ByVal valueType%, valueInfo As PEValueInfo) As Integer

Когда запускаю модуль, в котором используется это описание, VB плюется, сообщая, что вместо Any нужен "Expecting a valid data type (eg. Integer)" Если тип Any заменить на Variant , то все работает. В чем могут быть осложнения при такой замене и почему VB ругается, не подскажете?

Спасибо!
Юрий.

Кто знает жизнь, тот не торопится... Удачи на дорогах!
...
Рейтинг: 0 / 0
Any vs. Variant - в чем разница?
    #32818170
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Any VB не имеет информации о размере и не знает каким образом поместить это значение в стэк для передачи в DLL. А Variant - это тип известный с известным размером и VB знает как ее помещать в стэк.

Вот если бы был не ByVal, а ByRef для Any, то VB бы не ругался, так как тогда в стэк помещается просто указатель, размер которого прекрасно известен.

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 
...
Рейтинг: 0 / 0
Any vs. Variant - в чем разница?
    #32818450
Yuri Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DankovДля Any VB не имеет информации о размере и не знает каким образом поместить это значение в стэк для передачи в DLL. А Variant - это тип известный с известным размером и VB знает как ее помещать в стэк.

Вот если бы был не ByVal, а ByRef для Any, то VB бы не ругался, так как тогда в стэк помещается просто указатель, размер которого прекрасно известен.

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 


Спасибо за разъяснения...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Any vs. Variant - в чем разница?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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