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,CRastrEventDestination,&__uuidof(_IRastrEvents),&LIBID_ASTRALib,1,0>
{
public:
BEGIN_SINK_MAP(CRastrEventDestination)
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,Description,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.CreateInstance(CLSID_Rastr)) && SUCCEEDED(RastrEvents.DispEventAdvise(spRastr)))
{
spRastr->rgm(_T(""));
RastrEvents.Unadvise(spRastr);
}
}
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
|
Нет. Откроется новая, либо вложенная в Вашу, незакрытую, либо под Вашей закрытой. Когда режим досчитает, его стадия будет закрыта.
Дело в том, что "стадия" это просто заголовок в протоколе, под которым под плюсиком идут сообщения или вложенные стадии. Поскольку когда стадия открывается и далее в нее идут сообщения все это сразу попадает в протокол, очистить стадию не получится.
Я предполагаю что Вы хотите сделать некоторый отчет, в случае если нашлось что сообщить пользователю. А если не нашлось, вообще об этом не упоминать в протоколе. Я в таких случаях накапливаю сообщения во временный буфер, и по завершении работы, если буфер не пустой, открываю стадию и в нее переписываю накопленные сообщения.
|
|
|