Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

COM + ATL + VC6.

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
HomeStudio
Гость





СообщениеДобавлено: Вт Фев 24 2004 15:48    Заголовок сообщения: COM + ATL + VC6. Ответить с цитатой

Господа, пишу COM объекты, используя ATL. Как известно, интерфейсы там описываются на IDL. Так вот, например,

HRESULT MyStuff ([in] int, [out, string] LPCSTR*);

Работает, и возвращает строкую. Все мои попытки возвратить массив строк не увенчались успехом, т.е. [out, string] LPCSTR** не работает (но компилится).

Да и вообще, как возвращать свой тип данных, например, структуры?

Спасибо за помощь!

Дмитрий.
Вернуться к началу
Леша



Зарегистрирован: 18.03.2004
Сообщения: 8

СообщениеДобавлено: Вт Мар 23 2004 16:47    Заголовок сообщения: Ответить с цитатой

Необходимо определить в IDL свою структуру, а в методе- передать массив из структуры при помощи слов
max_is(Last) или size_is(Last):

typedef struct TMP
{ short DEL;
BSTR FullName;
long lngAGE;
}TMP;

HRESULT Metod1_My([in]long Last,[in,out,max_is(Last)]TMP Test1[]);
HRESULT Metod2_My([in]long Last,[in,out,size_iss(Last)]TMP Test2[]);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вт Мар 23 2004 19:54    Заголовок сообщения: Ответить с цитатой

структуры - это хорошо, но если нужны строки, работай с BSTR. Их ведь не просто так придумали.
Вернуться к началу
Гость






СообщениеДобавлено: Вт Мар 23 2004 19:57    Заголовок сообщения: Леша, тебе. Ответить с цитатой

А что можешь сказать по поводу проблеммы, описанной в теме "Знатокам COM". Заранее спасибо.
Вернуться к началу
Леша



Зарегистрирован: 18.03.2004
Сообщения: 8

СообщениеДобавлено: Ср Мар 24 2004 12:22    Заголовок сообщения: Ответить с цитатой

Замени
hr = pICF->CreateInstance(NULL, IID_ISend, (void**)&pIS);
hr=pIS->GetAllLocks();
hr=pICF->LockServer(TRUE);

Попробуй посмотреть на результаты hr ,который возвращает метод,если все ОК, то hr=0. При других значениях - ошибка при работе метода, для справки по коду ошибки смотри VS в
Tools->Error Lookup.
Вставь значение hr и глянь , что оно значит.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Леша



Зарегистрирован: 18.03.2004
Сообщения: 8

СообщениеДобавлено: Ср Мар 24 2004 12:33    Заголовок сообщения: Ответить с цитатой

Для возврата массива строк:

необходимо в IDL передать и вернуть массив строк BSTR при помощи слов
max_is(Last) или size_is(Last).
А long Last определяет длину массива.


HRESULT Metod1_My([in]long Last,[in,out,max_is(Last)]BSTR Test1[]);
HRESULT Metod2_My([in]long Last,[in,out,size_iss(Last)]BSTR Test2[]);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...