Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

string -> BSTR


volph ©   (2002-07-13 21:36:00) 

на C++ написал COM-объект, есть у меня там некий метод
STDMETHODIMP CComponent::getData(BSTR path, BSTR* result)

как в делфи передать параметр из string в виде BSTR ???


kig   (2002-07-15 11:51:00) [1]

Да из этого
STDMETHODIMP CComponent::getData(BSTR path, BSTR* result)
и вызова
getData(BSTR path, BSTR* result) - т.е. не PROPGET

процентов на 97%
idl выглядит так

HRESULT getData([in] BSTR path, [out, retval] BSTR* result)

а импорт в Д

function getData(const path: WideString): WideString; safecall;


Дмитрий Баранов   (2002-07-15 11:36:00) [2]

Кусок кода на IDL приведите, пожалуйста.


kig   (2002-07-15 11:04:00) [3]

Взгляните раздел MSDN
Platform SDK: Automation
String Manipulation Functions

Все вопросы отпадут и увидите, чем отличаются BSTR от POLECHAR, хотя на данные они указывают одинаково
(typedef OLECHAR * BSTR)


volph   (2002-07-14 15:27:00) [4]

Гы! Катит!!!!!!


kig   (2002-07-14 13:35:00) [5]

А так катит?

RichEdit1.Text := OBJ.getData(WideString(path));


volph   (2002-07-14 09:32:00) [6]

А вот что в 54-й строке написано:
RichEdit1.Text := OBJ.getData(StringToOleStr(path));

причем если я пишу:
RichEdit1.Text := OBJ.getData("data");

то все пашет на ура


awaken   (2002-07-14 02:08:00) [7]

у меня тоже глюки с этим делом при передаче строк.
есть COM-объект на C++, принимающий и возвращающий BSTR
при возврате в программу на Delphi передается мусор.
убрал dispinterface в C++, оставил vtable-интерфейс
после этого заработало. почему в первом случае не работало - загадка




Юрий Зотов   (2002-07-14 01:56:00) [8]

Дык... а что же все-таки написано в строке 154 модуля datas?
А то очень трудно читать на расстоянии...


volph   (2002-07-13 23:41:00) [9]

Все наврено хорошо бы было, если бы оно не ругалось на передачу такого параметра

[Error] datas.pas(154): Type not allowed in Variant Dispatch call


Макс Черных   (2002-07-13 22:51:00) [10]

function StringToOleStr(const Source: string): PWideChar;

BSTR есть то же самое что и PWideChar


Наверх

Титульная страница Поиск, карта сайта Написать письмо