Страница 1 из 1
1C&VC++ передача параметров
Добавлено: 01 окт 2004, 14:30
Stele
в функцию динамической библиотеки (на VC++) передается строка например "Path" из 1С как тип BSTR str. В функции объявляю такую же строку BSTR bstr = NULL;
bstr = SysAllocString ( L"Path" );
Затем эти строки сравниваю - результат они не равны. Почему??? Кто сталкивался с подобной проблемой?
Добавлено: 01 окт 2004, 15:10
Absurd
Попробуй их сравнивать через lstrcmp()
Добавлено: 05 окт 2004, 11:51
Stele
проверил, функция lstrcmp() не работает с типами BSTR
Добавлено: 05 окт 2004, 13:54
Romeo
Сами указатели конечно же не равны, они ведь указывают на разные участки памяти

Строки сравнивать нужно с помощью специальных функций. Для BSTR строк подойдёт например _mbccmp или wcscmp.
P.S. Советую использовать враперы для работы с такими строками (например CComBSTR или _bstr_t). А то ликов не оберёшься. Например в участке кода, который ты привёл (всего в двух строчках), уже есть лик.
Добавлено: 05 окт 2004, 14:50
Absurd
проверил, функция lstrcmp() не работает с типами BSTR
Там нужна lstrcmpW(). А при UNICODE - компиляции lstrcmpW() и lstrcmp() идентичны.
BSTR - это тоже самое что указатель на строку с широкими символами (WCHAR *).
Только для этих строк специальный менеджмент памяти нужен (SysAllocString() / SysFreeString()).