Здравствуйте, Whistler, Вы писали:
W>Добрый день!
W>Мне надо в функцию SysAllocString(const OLECHAR *) в качестве параметра всунуть значение переменной типа char [];
W>char A[10]; к примеру,
W>как мне преобразовать тип этой переменной в OLECHAR ...
W>Заранее спасибо!
Приведи ее к BSTR. Если нет там в строке системных символов — то через апишные функции(не помню, в MSDN найдешь), если есто такие , ну к примеру 0x01 и т.д , то только через SAFEARAY.
Здравствуйте, Flex2, Вы писали:
F>Здравствуйте, Whistler, Вы писали:
W>>Добрый день!
W>>Мне надо в функцию SysAllocString(const OLECHAR *) в качестве параметра всунуть значение переменной типа char [];
W>>char A[10]; к примеру,
W>>как мне преобразовать тип этой переменной в OLECHAR ...
W>>Заранее спасибо! F>Приведи ее к BSTR. Если нет там в строке системных символов — то через апишные функции(не помню, в MSDN найдешь), если есто такие , ну к примеру 0x01 и т.д , то только через SAFEARAY.
А конкретнее, мне действительно CHAR[] в BSTR перевести надо, а я вообще не знаю как
Здравствуйте, Whistler, Вы писали:
W>Здравствуйте, A_l_e_x_e_y, Вы писали:
A__>>А обязательно использовать только WinAPI?
W>мне все равно как, гдавное сконвертнуть
W>char [] в BSTR
W>а как?
Удобнее пользоваться классом _bstr_t:
A _bstr_t object encapsulates the BSTR data type. The class manages resource allocation and deallocation, via function calls to SysAllocString and SysFreeString, and other BSTR APIs when appropriate. The _bstr_t class uses reference counting to avoid excessive overhead.
а у него есть конструктор:
_bstr_t( const char* s2 ) throw( _com_error );
_bstr_t( char* s2 ) Constructs a _bstr_t object by calling SysAllocString to create a new BSTR object and encapsulate it. This constructor first performs a multibyte to Unicode conversion.
Здравствуйте, VsevolodC, Вы писали: VC>Удобнее пользоваться классом _bstr_t:
Только что тоже хотел ответить именно так, но заглянув в comutil.h обнаружил две функции
Здравствуйте, Whistler, Вы писали:
W>Здравствуйте, A_l_e_x_e_y, Вы писали:
A__>>А обязательно использовать только WinAPI?
W>мне все равно как, гдавное сконвертнуть
W>char [] в BSTR
W>а как?
преобразовать char [] в BSTR можно вот так
char a[10];
...
//заполнили массив данными
...
//использует <comutil.h>
BSTR bstrText = _com_util::ConvertStringToBSTR(a);
// всё в BSTR наша строка
Здравствуйте, Whistler, Вы писали:
W>Добрый день!
W>Мне надо в функцию SysAllocString(const OLECHAR *) в качестве параметра всунуть значение переменной типа char [];
W>char A[10]; к примеру,
W>как мне преобразовать тип этой переменной в OLECHAR ...
W>Заранее спасибо!
Да работа с BSTR это Вам не тут Но есть в ATL несколько вещей которые делают этот процесс не таким мучительным.
1. Макросы преобразования. W2OLE например который делает именно то что тебе тут нужно.
Использовать так:
USES_CONVERSION;
...
LPOLESTR x = A2OLE(lpsz) и т.д.Хедер atlconv.h если не ошибаюсь.
Но с BSTR жить просто не выносимо ( по моему личному мнению ).Однако ситуацию спасает класс CComBSTR.С ним повеселее будет