Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] System::String -> BSTR 21.11.05 02:49
Автор: catlion <catlion> Статус: Member Отредактировано 21.11.05 03:20 Количество правок: 2
|
Камрады, помогите пожалуйста, совсем запутался во всех этих строковых преобразованиях.
Есть NET форма, из TextBox'а которой надо взять String и преобразовать его в BSTR для упаковки в структуру DISPPARAMS.
На MSDN форуме нашел 2 решения: include vcclr.h and use the PtrToStringChars (который возвращает __wchar_t __gc*), и Marshal.StringToHGlobalAnsi (который возвращает IntPtr).
Может ктото подскажет глупому, как всётаки преобразовать в BSTR или OLECHAR* (а заодно и в простой char*), и вообще, где почитать о преобразовании строковых типов? В тех книгах, что я нашел это не описано. В MSDN'e просто описание функций без методы...
|
|
[C++] более того... 21.11.05 04:24
Автор: catlion <catlion> Статус: Member Отредактировано 21.11.05 04:41 Количество правок: 3
|
Функция StringToHGlobalAnsi() определена в namespace System::Runtime::InteropServices, если вставить
using namespace System::Runtime::InteropServices;
то компилятор ругается на определение структуры DISPPARAMS, пишет
error C2872: 'DISPPARAMS' : ambiguous symbol
could be 'c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\OAIdl.h(701) : tagDISPPARAMS DISPPARAMS'
or 'stdafx.cpp(0) : System::Runtime::InteropServices::DISPPARAMS'
[UPD]
С преобразованием разобрался вроде, работает
BSTR cstr ((BSTR)(void*) Marshal::StringToHGlobalAnsi(str));
---
однако ругань на DISPPARAMS осталась :)
|
| |
[off] какой полезный форум :))) 21.11.05 04:48
Автор: catlion <catlion> Статус: Member
|
Неоднократно замечал, что люди, только написав сюда, разбираются с проблемой сами. Видимо, даже такая вербализация задачи помогает ее решить :))
|
|
|