Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: тип параметра BSTR у метода COM объекта убивает пргу  (Прочитано 3713 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mike_I
Участник

ru
Offline Offline
Пол: Мужской
Mike


« : 21-09-2006 12:59 » 

Привет народ.
Есть COM сервер автоматизации, написан на VStudio. Если ваять клиентску прогу на VB или VStudio то сервер работает нормально.
Но необходимо использовать в Билдер, а в нем при вызове любого метода среди параметров которого есть BSTR приводит к ошибке(а может это и не ошибка - я с билдером до этого не работал). в общем отладка приостанавливается и компилятор выдает окошко с ассимблерным кодом программы. В принципе прога продолжает работать, если продолжить выполнение(F9) то программа выполняется дальше нормально. Но тот метод у которого в параметрах есть BSTR не выполняется. Все прочие методы сервера вызываются и работают нормально.

Вот код:
      _di_IDispatch pFPrDispatch;
      Printer *Printer1;
      pFPrDispatch = GetActiveOleObject("Devicedisp.Printer");
      HRESULT hr = pFPrDispatch->QueryInterface(DIID_IPrinter, (void**)&Printer1);

      wchar_t Nam[3];
      Nam[0] = 'H';Nam[1] = 'I';Nam[2] = 0;

     Printer1->Open(BSTR(Nam)); // здесь происходит то что я описал
     Printer1->ClaimDevice(0); // работает нормально
     Printer1->set_DeviceEnabled(VARIANT_TRUE);

     Кто-нибудь встречался/знает как это исправить?
« Последнее редактирование: 14-12-2007 16:07 от Алексей1153++ » Записан

Nothing fails like success.
sss
Специалист

ru
Offline Offline

« Ответ #1 : 22-09-2006 01:16 » 

Код:
  BSTR  bstr = SysAllocString( Num) ;
  Printer1->Open( bstr); // здесь происходило то что ты описал
  SysFreeString( bstr);
Записан

while (8==8)
Mike_I
Участник

ru
Offline Offline
Пол: Мужской
Mike


« Ответ #2 : 22-09-2006 06:56 » 

Да заработало большое спасибо.
Записан

Nothing fails like success.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines