На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 67418145
9495
Hosts 3608843
1880
Visitors 53570706
9176

62


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Ключи KDD, OLE » в форуме: Макро   Просмотров: 14555
 
EstVopros
Заглянувший
 
Всего сообщений: 1
Дата регистрации: 11.08.2011
Создано: 11.08.2011 23:31:58
 
 
Возник вопрос:
Какие ключи принимает KDD?

Если использовать растр как OLE сервер, то как получить доступ к протоколу?
 
Профиль
Наверх
Владимир Неуймин
Администратор
 
Всего сообщений: 268
Дата регистрации: 13.03.2007
Создано: 15.08.2011 15:06:23
 
 
1)
n - не отключает узлы ветви при наличии ошибок
2 - выдает ошибку при наличии больше одного балансирующиего узла в связанном фрагменте.
о - отмечает узлы в фрагменте, ограниченном отмеченными ветвями.

2) например так:
set st=Rastr.stage ("Коррекция потребления " )
st.Log LOG_INFO,"Задано потребление=" & potr

подробности в макросах
 
Профиль
Наверх
Konstantin
Посетитель
 
Всего сообщений: 11
Дата регистрации: 24.05.2011
Создано: 15.08.2011 17:02:08
 
 
А как можно перехватить сообщения посылаемые в протокол?
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 16.08.2011 14:26:26
 
 
Подключиться к событию интерфейса _IRastrEvents:

[id(4), helpstring("method OnLog")] HRESULT OnLog([in]LogErrorCodes Code,[in]long Level,[in] long StageId, [in] BSTR TableName, [in] long TableIndex, [in] BSTR Description, [in] BSTR FormName);
 
Профиль
Наверх
Konstantin
Посетитель
 
Всего сообщений: 11
Дата регистрации: 24.05.2011
Создано: 16.08.2011 17:09:26
 
 
Спасибо, Евгений!

А можно чуть-чуть поподробнее, как подключиться?
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 16.08.2011 18:44:08
 
 
Не за что.
Можно поподробней. Вы в какой среде хотите перехватывать протокол ?
 
Профиль
Наверх
Konstantin
Посетитель
 
Всего сообщений: 11
Дата регистрации: 24.05.2011
Создано: 16.08.2011 19:18:39
 
 
В С++
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 16.08.2011 23:09:27
 
 
Отличный выбор. Я полагаю речь идет о C++ из MSVS, поэтому вот простейший пример черновика консоли с использованием ATL, делающей подключение.
Код
#include "stdafx.h"
#include "atlbase.h"
#include "atlcom.h"
#import "c:\program files\rastrwin\astra.­dll" no_namespace named_guids
class CRastrEventDestination : public IDispEventImpl<0,CRastrEv­entDestination,&__uuidof(­_IRastrEvents),&LIBID_AST­RALib,1,0>
{
   public:
   BEGIN_SINK_MAP(CRastrEven­tDestination)
   SINK_ENTRY_EX(0, __uuidof(_IRastrEvents), 0x4, OnLog)
   END_SINK_MAP()
   HRESULT __stdcall  OnLog(LogErrorCodes Code,long Level,long StageId,BSTR TableName,long TableIndex,BSTR Description,BSTR FormName)
   {
      MessageBox(NULL,Descripti­on,NULL,MB_OK);
      return S_OK;
   }
};
CComModule _Module;
int _tmain(int argc, _TCHAR* argv[])
{
   if(SUCCEEDED(CoInitialize­(NULL)))
   {
      IRastrPtr spRastr;
      CRastrEventDestination RastrEvents;
      if(SUCCEEDED(spRastr.Crea­teInstance(CLSID_Rastr)) && SUCCEEDED(RastrEvents.Dis­pEventAdvise(spRastr)))
      {
         spRastr->rgm(_T(""));
         RastrEvents.Unadvise(spRa­str);
      }
   }
   return 0;
}
 
Профиль
Наверх
Konstantin
Посетитель
 
Всего сообщений: 11
Дата регистрации: 24.05.2011
Создано: 17.08.2011 10:56:33
 
 
Вот только не задача, в Qt или Borlande нет (если я не ошибаюсь) директивы #import.
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 17.08.2011 15:00:32
 
 
Не слыхал, что в QT есть вообще какие либо директивы, если только он не обзавелся собственным компилятором. Насчет Borland не знаю, не приходилось.
Так что, как говорится, чем богаты.
 
Профиль
Наверх
Konstantin
Посетитель
 
Всего сообщений: 11
Дата регистрации: 24.05.2011
Создано: 17.08.2011 15:50:46
 
 
Пишут, что в Qt 4 Еще одно изменение в системе сборки - теперь moc понимает директивы препроцессора. qmake автоматически передает установленные для вашего проекта определения (используя "DEFINES +=") в moc, который имеет собственный встроенный препроцессор C++.
 
Профиль
Наверх
Konstantin
Посетитель
 
Всего сообщений: 11
Дата регистрации: 24.05.2011
Создано: 17.08.2011 15:51:48
 
 
Спасибо, будем разбираться!
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 18.08.2011 16:25:47
 
 
Цитата
Владимир Неуймин пишет:
2) например так:
set st=Rastr.stage ("Коррекция потребления " )
st.Log LOG_INFO,"Задано потребление=" & potr


Подскажите пожалуйста, существует ли метод позволяющий очистить Stage ?
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 18.08.2011 16:46:48
 
 
Нет такого метода. Стадию только закрыть можно.
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 19.08.2011 11:53:28
 
 
А при запуске например метода ratsr.rgm() в макро она снова откроется ?
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 19.08.2011 13:59:32
 
 
Нет. Откроется новая, либо вложенная в Вашу, незакрытую, либо под Вашей закрытой. Когда режим досчитает, его стадия будет закрыта.
Дело в том, что "стадия" это просто заголовок в протоколе, под которым под плюсиком идут сообщения или вложенные стадии. Поскольку когда стадия открывается и далее в нее идут сообщения все это сразу попадает в протокол, очистить стадию не получится.

Я предполагаю что Вы хотите сделать некоторый отчет, в случае если нашлось что сообщить пользователю. А если не нашлось, вообще об этом не упоминать в протоколе. Я в таких случаях накапливаю сообщения во временный буфер, и по завершении работы, если буфер не пустой, открываю стадию и в нее переписываю накопленные сообщения.
 
Профиль
Наверх



Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019