Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2016, 20:44   #1
Daemvil
Пользователь
 
Регистрация: 23.12.2009
Сообщений: 56
По умолчанию Различие типов Variant в MS VS (C++) и Delphi 7

Всем доброго времени суток!
Возникла необходимость передавать в качестве параметра из программы, написанной на C++ в VS, в функцию библиотеки, написанной на Delphi 7, переменную с типом Variant. В библиотеке описаны функции, в которых передаются типы PChar, integer, double, в том числе тестовые функции - все работает нормально. Но при попытке передать Variant, при обращении к функции VS пишет ошибку "Внешний компонент создал исключение."
Вот код импорта и вызова функций:
Код:
HINSTANCE hLib = LoadLibrary(L"helperlib.dll");

typedef void(CALLBACK* FreeBookF)();
typedef int (CALLBACK* SetDoubleCellF)(int, int, int, double);
typedef int (CALLBACK* SetIntCellF)(int, int, int, int);
typedef int (CALLBACK* SetStringCellF)(int, int, int, char*);
typedef int (CALLBACK* AddSheetF)(char*);
typedef int (CALLBACK* SheetRenameF)(int, char*);
typedef int (CALLBACK* SaveXLSF)(char*);
typedef VARIANT (CALLBACK* GetParam2F)(VARIANT);

GetParam2F		GetParam2 =		(GetParam2F)	GetProcAddress((HMODULE)hLib, "GetParam2"	 );
FreeBookF		FreeBook =		(FreeBookF)		GetProcAddress((HMODULE)hLib, "FreeBook"	 );
SetDoubleCellF	SetDoubleCell =	(SetDoubleCellF)GetProcAddress((HMODULE)hLib, "SetDoubleCell");
SetIntCellF		SetIntCell =	(SetIntCellF)	GetProcAddress((HMODULE)hLib, "SetIntCell"	 );
SetStringCellF	SetStringCell = (SetStringCellF)GetProcAddress((HMODULE)hLib, "SetStringCell");
SheetRenameF	SheetRename =	(SheetRenameF)	GetProcAddress((HMODULE)hLib, "SheetRename"	 );
AddSheetF		AddSheet =		(AddSheetF)		GetProcAddress((HMODULE)hLib, "AddSheet"	 );
SaveXLSF		SaveXLS =		(SaveXLSF)		GetProcAddress((HMODULE)hLib, "SaveXLS"		 );

	VARIANT s,s1;
	char* a;
	a = "tratata";
	s.pcVal = a;
	
	s1=GetParam2(s);
Подскажите, пожалуйста, кто знает, в чем различие типов Variant в Delphi 7 и в MS VS C++(использую VS2010)? И как из этой ситуации выкрутиться, если значение для функции иной раз будет необходимо передавать в виде Variant?
Nostra Sunt

Последний раз редактировалось Daemvil; 27.03.2016 в 20:48.
Daemvil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение Variant-ов Delphi AnTe Помощь студентам 2 05.12.2011 05:36
Различие MD5 Delphi и MD5 PHP Viteef Общие вопросы Delphi 14 09.02.2011 11:53
Набрать номер по модему. Различие в реализации кода Delphi 2007 и 2010. plato Общие вопросы Delphi 8 06.04.2010 09:47
Delphi 2007 и переменная Variant М_Виктор Общие вопросы Delphi 2 23.03.2010 10:15
Variant to Stream & Variant from Stream Oreol Общие вопросы Delphi 1 24.03.2009 13:14