Автор Тема: Отчеты и плагины  (Прочитано 38672 раз)

0 Пользователей и 1 Гость просматривают эту тему.

mobilesfinks

  • Дилеры
  • Ветеран
  • *
  • Сообщений: 745
  • Карма: +4/-0
Re: Отчеты и плагины
« Ответ #15 : 12 Апрель 2012, 13:15:11 »
Цитировать
Даже представлять неохота, сколько займет тот же код на C++ или Delphi.

Столько же, сколько этот код на C++ занимает в исходниках питона.

для С++, так же как и для Дельфи уже столько всего понаписано, что при правильном подходе и небольшом количества гугля код будет ничуть не больше.
тут разговор о перегруженности кода у С++ лишними операторами в виде скобок и др мелочей. У питона код выглядит намного более удобочитаемым, а всё из-за того, что табуляция - это часть синтаксиса. Он прост в понимании, а значит передать часть своего кода другому проще. Принимающая сторона быстрее разберется. В общем то в этом и есть громадный плюс питона. 

CraiD

  • Старожил
  • ****
  • Сообщений: 431
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #16 : 12 Апрель 2012, 14:52:45 »
тут разговор о перегруженности кода у С++ лишними операторами в виде скобок и др мелочей. У питона код выглядит намного более удобочитаемым, а всё из-за того, что табуляция - это часть синтаксиса. Он прост в понимании, а значит передать часть своего кода другому проще. Принимающая сторона быстрее разберется. В общем то в этом и есть громадный плюс питона. 
:friends:

CraiD

  • Старожил
  • ****
  • Сообщений: 431
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #17 : 12 Апрель 2012, 14:55:08 »
Цитировать
Даже представлять неохота, сколько займет тот же код на C++ или Delphi.

Столько же, сколько этот код на C++ занимает в исходниках питона.
Мда... Хорошо хоть не спросил сколько он на ассемблере займёт.  :biggrin:

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #18 : 24 Апрель 2012, 21:29:54 »
И снова по делу. Хотелось бы увидеть все таки рабочий Пример Если Это Возможно Ну Очень Нужно.

_Alex_

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2706
  • Карма: +3/-0
  • Алексей
Re: Отчеты и плагины
« Ответ #19 : 25 Апрель 2012, 09:25:04 »
И снова по делу. Хотелось бы увидеть все таки рабочий Пример Если Это Возможно Ну Очень Нужно.

Приведенный пример был вполне рабочим.

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #20 : 25 Апрель 2012, 11:59:52 »
Я не сколько не сомневаюсь в вашем профессионализме и вашей компетенции по данному вопросу,  но все таки если это вас очень не затруднит не могли бы вы дать рабочий пример кода с рабочей dll. Спасибо заранее за понимание.

_Alex_

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2706
  • Карма: +3/-0
  • Алексей
Re: Отчеты и плагины
« Ответ #21 : 25 Апрель 2012, 14:08:54 »
Я не сколько не сомневаюсь в вашем профессионализме и вашей компетенции по данному вопросу,  но все таки если это вас очень не затруднит не могли бы вы дать рабочий пример кода с рабочей dll. Спасибо заранее за понимание.

Куда скинуть?

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #22 : 25 Апрель 2012, 14:15:01 »
Можно на andrey@locarus.com.ua

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #23 : 26 Апрель 2012, 13:29:54 »
По прежнему хочется увидеть рабочий пример. Заранее  спасибо!!!!

_Alex_

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2706
  • Карма: +3/-0
  • Алексей
Re: Отчеты и плагины
« Ответ #24 : 26 Апрель 2012, 14:51:34 »
По прежнему хочется увидеть рабочий пример. Заранее  спасибо!!!!

Отправил.

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #25 : 26 Апрель 2012, 14:57:36 »
По прежнему хочется увидеть рабочий пример. Заранее  спасибо!!!!

Отправил.
Большое спасибо.

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #26 : 26 Апрель 2012, 18:46:41 »
По прежнему хочется увидеть рабочий пример. Заранее  спасибо!!!!

Отправил.
Большое спасибо.

Так как обсуждаемый функционал в плагинах по прежнему нужен я снова с проблемой.
Присланный исходник не удалось собрать но это не совсем важно что бы отсечь лишнее я выделил с него только то что касается взаимодействия плагина с отчетами.
#include "stdafx.h"
#include "BBPlugin.h"
#include <stdlib.h>
#include <TCHAR.H>
#include <windows.h>

#ifdef _MANAGED
#pragma managed(push, off)
#endif

HMODULE hMyModule;

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
)
{
hMyModule = hModule;
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

bool IsActive;
HWND MyDialog;

TPointLL LastMapPoint;

BBPLUGIN_API char PluginCaption[] = "Test Report";

_TPluginsEvent *PluginsEvent;

LPCalcReportVar  OldOnCalcReportVar;
int MyReportVar1, MyReportVar2;
double MyCalcReportVar(int ReportVarID, int IndexFrom, int IndexTo, char* &ValueS);

BBPLUGIN_API void InitBBPlugin(_TPluginsEvent *param)
{
//Проверяем версию движка
int Version = param->GetVersion();
if ((Version / 1000 != MajorVersion) || //Плагины не совместимы с разными MajorVersion
(Version % 1000 < MinorVersion)) //Но совместимы вверх в пределах одинаковой MajorVersion
{
MessageBox(NULL,_T("Incorrect Plugin engine version"), _T("Error"), MB_OK | MB_ICONERROR);
return;
}
MyReportVar1 = param->PluginReportFunction->AddReportVar("PluginVar","Это переменная из плагина");
MyReportVar2 = param->PluginReportFunction->AddReportVar("PluginVar2","Это тоже переменная из плагина");
OldOnCalcReportVar =  param->PluginReportFunction->OnCalcReportVar;
param->PluginReportFunction->OnCalcReportVar = MyCalcReportVar;
}

double MyCalcReportVar(int ReportVarID, int IndexFrom, int IndexTo, char* &ValueS)
{
if (ReportVarID == MyReportVar1){
    return IndexFrom;
} else if (ReportVarID == MyReportVar2){
ValueS = (char*) PluginsEvent->PluginUtilsFinctions->LIGetMemory(100);
    strcpy(ValueS,"!!!!!!!!");
    return 0;
} else if (OldOnCalcReportVar) return OldOnCalcReportVar(ReportVarID, IndexFrom, IndexTo,ValueS);
return 0;
}
Для проверки был взят стандартный шаблон отчетов который идет в качестве примера .

Выбираем для отображения в отчете идентификаторов

вложение 1

и смотрим результат

вложение 2

отлично пробуем другую переименую

вложение 3

но тут нас постигает неудача

вложение 4

Пытаемся создать краш репорт и снова не судьба

https://docs.google.com/open?id=0ByJyzZfBvkF_VHhZWWZjb2V4eVk

Все действия проводились под следующей версией

https://docs.google.com/open?id=0ByJyzZfBvkF_aS1CcmYySzFtNWM

Ну вот вроде ситуацию описал.

И прошу вашей помощь или содействия или указания на мою ошибку  или не знание предметной области. Одним словом помогите!!!!!!!!!!!!

_Alex_

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2706
  • Карма: +3/-0
  • Алексей
Re: Отчеты и плагины
« Ответ #27 : 27 Апрель 2012, 10:23:10 »
Пытаемся создать краш репорт и снова не судьба

Если отчет об ошибке не отправляется (используется почтовик, неправильно регистрирующий или вообще не регистрирующий объекты MAPI), то можно отправить мне ELF-файл, который создает генератор отчетов об ошибке в папке с программой.
Вообще я проверял работу плагина и у меня все отработало. Использовал список рейсов для испытаний.
Пришлите мне отчет об ошибке и Ваш собранный плагин на Alexei@loсarus.ru

На чем собирали проект? Проверьте в настройках проекта выравнивание (Align) должно быть DWORD (4 byte)

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #28 : 27 Апрель 2012, 15:24:58 »
Все отлично и работает, спасибо за помощь.

bigdragon

  • Дилеры
  • Пользователь
  • *
  • Сообщений: 53
  • Карма: +0/-0
Re: Отчеты и плагины
« Ответ #29 : 28 Апрель 2012, 16:48:20 »
Возникли новые трудности и они скорее связаны с выделяемой памятью через LIGetMemory. Хочется уточнить следующие нюансы

1 - почему в примере используется значение 100 для выделение памяти это так нужно или на угад ?
2 - В примере не реализована очистка памяти или она не требуется ( ну типа LI сам все сделает) .
3 - Память под переменную выделяется каждый раз когда вычисляются данные или только один раз.
4 - Если память очищать нужно самостоятельно то добавьте в пример как это правильно делать.

Ну вообщем поделитесь информацией той которую посчитаете нужной.


Для прояснения ситуации приатачил ELF файл и скрин.     
Ошибка появляется после третьего или четвертого открытия отчета. Плагин выводит результат в столбец "Комментарий" .