Страница 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()).