Пишем не на VIP, а на Pascal

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Пишем не на VIP, а на Pascal

Сообщение Maverick »

Ребят, кто под Галку ваяет чего нить на Пасквиле... Поделитесь опытом плз... Необходимо сделать отчетец в разрезе контрагентов по указанным счетам, но нужно чтоб он махом формировался - типа аналитической ведомости... А скорость насколько я понял возможна только при работе с таблицами как объектами - напрямую через паскаль... Сам ни разу не трогал эту вещь, посему у кого какой опыт есть - расскажите с чего начать... ???
Заранее признателен.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Пишем не на VIP, а на Pascal

Сообщение Den »

Быстрота, навреное, будет достигнута за счет того, что .pas будут компилиться в машинный код, в отличие, от написанных на випе-е. А хранятся они в ..\exe\xxx.dll ?
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Пишем не на VIP, а на Pascal

Сообщение Den »

Быстрота, наверное, будет достигнута за счет того, что .pas будут компилиться в машинный код, в отличие, от написанных на випе-е. А хранятся они в ..\exe\xxx.dll ?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Пишем не на VIP, а на Pascal

Сообщение Maverick »

Вот я и хочу узнать
а) как начать
б) как компилять
в) куда компилять

и вообще - что за хрень такая вообще...
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Kareno
Посетитель
Сообщения: 40
Зарегистрирован: 29 мар 2005, 17:49

Re: Пишем не на VIP, а на Pascal

Сообщение Kareno »

Хм, вообщем это про меня ;)
Есть такое дело, но пишу на Делфях причем база у нас на Оракле. Естессно доступ к данным значительно быстрее.
Делается всё это не очень правильно, в том смысле, что не по канонам программирования, но суть вот в чём:
из галактики формируется файл с параметрами отчета типа запрос и требуемые данные для его формирования дальше вызывается прога которая перерабатывает этот файл и лезет в Оракл и выдает всё это в Xl (написал свой обработчик шаблонов) или в текстовик.
В принципе можно было написать с использование CrystalReports или FastReports
но мне не понравился их механизмы работы с Excel пришлось написать свой.
Вся прога в 500 строк + объктный код функций к Excel + прога доступа к Oracle. Delphi 6.0
Кладется всё это в папку EXE и быстро работает ;).
Опять же НО на данный момент есть первая версия в которой в Excel работа идет через системный буфер что нагружает систему по полной, но всё равно быстрее против Галки,
собираюсь писать вторую версию, сразу как только время появиться.
Общий привет! ;)
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Пишем не на VIP, а на Pascal

Сообщение Maverick »

Виктор, видимо Вы не поняли меня.
Имелось ввиду что частенько встречается такая вещь как RunProcess (); где сам процесс реализован на паскале с использованием атлантисовских объектов и т.п.
и хранится этот процесс кажется в *.res или DLL
Вот об этом хотелось пообщаться...
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Kareno
Посетитель
Сообщения: 40
Зарегистрирован: 29 мар 2005, 17:49

Re: Пишем не на VIP, а на Pascal

Сообщение Kareno »

RunProcess это действительно вызов функций, но тех которые зарегистрированы в VIP.
Весь пирог со стороны смотриться так:
Обыкновенный объектный паскаль а-ля Делфи
который компилит Атлантис то есть набор объектов, методов, свойств, функций и процедур
который компилит VIP и проч языки Галактики в которых используются функции и процедуры которые были зарегистрированы специальным образом.
Т.о. winint.exe компиляция Делфи, а рес это уже компиляция Атлантиса.
Теперь про написание на Паскале, а нет RunProcess это запуск VIP-овских процедур, функций или объектов (чего - точно врать не буду не знаю).
Чтобы запустить Пасквилевскую нужно скомпилить процедуру в dllку или если сможете в winint.exe ;) дальше зарегистрировать её для VIPа как функцию
а потом пользоваться ей в Vipе как обыкновенной функцией.
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: Пишем не на VIP, а на Pascal

Сообщение GTHack »

можно поподробнее и желательно какой нить супер-простенький примерчик
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Пишем не на VIP, а на Pascal

Сообщение Maverick »

Просим, просим... )))
Например такое как реализовать? :
Хочу получить обороты по выбранной организации по указанному бухсчету. (Опять же повторюсь - реализовать не на ВИП а на Дельфах, Пасквиле...)
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Kareno
Посетитель
Сообщения: 40
Зарегистрирован: 29 мар 2005, 17:49

Re: Пишем не на VIP, а на Pascal

Сообщение Kareno »

Ага, ладно поехали дальше, следущее с чем я столкнулся... это было то что Оракловая сессия открыта в Пасквиле Атлантиса а функции и объекты не протранслированы в VIP в полной мере, то есть мы можем пользоваться GetFirst и т.д. но мы не можем сказать Session.SQL.Add('Select * from basedoc;').!
Такое насколько я знаю есть только в 5 атлантисе да и то я не уверен ;(.
Так вот отсюда вывод чтобы получить обороты по счету нужен доступ К БД, а его с той же сессией нет ;(
Но не всё так плохо, можно в функцию передавать параметры подключения если запрашивать у пользователя пароль ;( что не хорошо или сделать свой логин для своих функций. и опять но, в Оракле формированием полей ATL_last... занимаються триггеры который вычисляю значение пользователя по текущей сессии, то есть мы можем получить что кто же послений менял будет неизвестно или это будет 1 логин!
И опять же не всё так плохо, я долго мучался над этим вопросом и пришёл к выводу что функции можно строить только отчетные а если нужно что-то изменить то необходимо передавать запрос на изменение обратно в Галку и менять уже VIP'ом!, а как?

Так теперь разберемся с маленьким супер простеньким примером. Ага, посмотрел на диске всё уже давно стёрто ;( а дело в том что в VIP насколько мне удалось можно передавать простые параметры типа String какой-то ограниченный, Integer ну вообщем всё несложное и с массивами по моему тоже напряжёнка ;( короче как в том анекдоте "а хотите по настоящему потра.." поэтому в программе реализовал передачу параметром через файл в простом виде
название_параметра:значение_параметра.
а вот как регистрировать щаз найду, о помоему все уже позанимались отчетами в Excel, яркий пример такого программирования!
На нём кстати и учился! ;)
Чтобы зарегистрировать функцию надо чтобы она была Public и большими буквами, а то у Галактики с этим промблема ;)
Ex.:
Public
Constructor OpenExcel(Visible : boolean);
Constructor Create(FileName : shortstring; Visible : boolean);
Constructor CreateWithTemplate(TemplateName : shortstring; Visible : boolean);
Destructor Destroy; override;

Function OpenWorkBook(FileName : shortstring) : boolean;
Function SaveWorkBook(iNumber : shortint) : boolean;

О кстати оттуда!
Общие сведения
Данная библиотека обеспечивает прямое обращение к функциям Excel. Дает возможность формировать и форматировать отчеты, а также использовать все стандартные функции Excel как из VIP-а, так и из паскаля.

Библиотека оформлена в виде 2-х dll-ек.
1. ExcelLib.dll - сама реализация функций, написанная на настоящем DELPHI4 (не Атлантис).
2. RegExcel.dll - регистрация функций для VIP-а, написанная на Атлантис DELPHI4.
Данное оформление позволяет использовать все возможности настоящего DELPHI4 (корректная обработка исключительны ситуаций и т.п.), а также безболезненную доработку библиотеки, не меняя GalNet.Exe.

(C) Галактика!!!

и наконец:
Методика использования библиотеки
Так как сама библиотека будет еще некоторое время дополняться и изменяться, то для использования ее функций предлагается следующая методика. Все используемые функции в текущем отчете рекомендуется переопределить в VIP-e. На случай, если изменится синтаксис функций.
Например:
Function MyCreateExcel(FName : string; isShowFile : boolean) : boolean;
{
MyCreateExcel := xlCreateExcel(FName, isShowFile);
}


Ну вот пожалуй и всё ;)
Есть вопросы? задавайте.
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: Пишем не на VIP, а на Pascal

Сообщение GTHack »

допустим на дельфях я длл-ку собрал, как собрать длл на атлантис делфи для регистрации ф-ий для випа?
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Kareno
Посетитель
Сообщения: 40
Зарегистрирован: 29 мар 2005, 17:49

Re: Пишем не на VIP, а на Pascal

Сообщение Kareno »

Я делфёвую длл-ку пихал в EXE
а в VIP писал
function myFunc (string) : string; external 'MY.DLL'
Den_Is
Постоянный обитатель
Сообщения: 169
Зарегистрирован: 08 авг 2005, 20:11
Откуда: Омск

Сообщение Den_Is »

Интересная тема, случайно наткнулся.
А ехе-к куда ложить?
Может у кого есть что почитать по использованию паскаля в випе?
Ответить