В VBScript есть одна интересная функция — называется TypeName, которая получает тип переменной. Очень хотелось бы узнать, как это делается, и реализовать подобную функцию для Visual C++.
Для переменных типа число, строка, дата и т.п. все достаточно просто. Основная проблема возникает с объектами. Как получить тип объекта (VT_DISPATCH)? VBScript не говорит, что это просто объект, а говорит — что это, например, "FileSystemObject" или "IWshShell3" объект. Как он это узнает???
Здравствуйте, Ury, Вы писали:
Ury>Для переменных типа число, строка, дата и т.п. все достаточно просто. Основная проблема возникает с объектами. Как получить тип объекта (VT_DISPATCH)? VBScript не говорит, что это просто объект, а говорит — что это, например, "FileSystemObject" или "IWshShell3" объект. Как он это узнает???
VB использует функций для работы с Type Library, он загружает библиотеку и вынимает из нее всю информацию. Посмотри интерфейсы ITypeLib, ITypeInfoю
... << RSDN@Home 1.1.4 beta 3 rev. 0>>
Спасибо за помощь. Разобрался.
Если кому интересно, то с помощью следующей последовательности вызовов можно добраться до описания типов:
pDisp->GetTypeInfo(0, LOCALE_SYSTEM_DEFAULT, &pTypeInfo);
pTypeInfo->GetContainingTypeLib (&pTLib, &nIndex);
pTLib->GetDocumentation (nIndex, &pName, &pDocString, &nContext, &pHelpFile);