Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Any vs. Variant - в чем разница? / 3 сообщений из 3, страница 1 из 1
06.12.2004, 12:52:01
    #32814245
Yuri Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Any vs. Variant - в чем разница?
Добрый день!

Есть декларирование процедуры вида:
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
08.12.2004, 11:22:52
    #32818170
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Any vs. Variant - в чем разница?
Для Any VB не имеет информации о размере и не знает каким образом поместить это значение в стэк для передачи в DLL. А Variant - это тип известный с известным размером и VB знает как ее помещать в стэк.

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

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

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

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


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


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