Пишем не на VIP, а на Pascal
Модераторы: m0p3e, edward_K, Модераторы
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Пишем не на VIP, а на Pascal
Ребят, кто под Галку ваяет чего нить на Пасквиле... Поделитесь опытом плз... Необходимо сделать отчетец в разрезе контрагентов по указанным счетам, но нужно чтоб он махом формировался - типа аналитической ведомости... А скорость насколько я понял возможна только при работе с таблицами как объектами - напрямую через паскаль... Сам ни разу не трогал эту вещь, посему у кого какой опыт есть - расскажите с чего начать... ???
Заранее признателен.
Заранее признателен.
-
- Местный житель
- Сообщения: 1842
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Быстрота, навреное, будет достигнута за счет того, что .pas будут компилиться в машинный код, в отличие, от написанных на випе-е. А хранятся они в ..\exe\xxx.dll ?
-
- Местный житель
- Сообщения: 1842
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Быстрота, наверное, будет достигнута за счет того, что .pas будут компилиться в машинный код, в отличие, от написанных на випе-е. А хранятся они в ..\exe\xxx.dll ?
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Вот я и хочу узнать
а) как начать
б) как компилять
в) куда компилять
и вообще - что за хрень такая вообще...
а) как начать
б) как компилять
в) куда компилять
и вообще - что за хрень такая вообще...
Re: Пишем не на VIP, а на Pascal
Хм, вообщем это про меня ![Wink ;)](./images/smilies/239.gif)
Есть такое дело, но пишу на Делфях причем база у нас на Оракле. Естессно доступ к данным значительно быстрее.
Делается всё это не очень правильно, в том смысле, что не по канонам программирования, но суть вот в чём:
из галактики формируется файл с параметрами отчета типа запрос и требуемые данные для его формирования дальше вызывается прога которая перерабатывает этот файл и лезет в Оракл и выдает всё это в Xl (написал свой обработчик шаблонов) или в текстовик.
В принципе можно было написать с использование CrystalReports или FastReports
но мне не понравился их механизмы работы с Excel пришлось написать свой.
Вся прога в 500 строк + объктный код функций к Excel + прога доступа к Oracle. Delphi 6.0
Кладется всё это в папку EXE и быстро работает
.
Опять же НО на данный момент есть первая версия в которой в Excel работа идет через системный буфер что нагружает систему по полной, но всё равно быстрее против Галки,
собираюсь писать вторую версию, сразу как только время появиться.
Общий привет!![Wink ;)](./images/smilies/239.gif)
![Wink ;)](./images/smilies/239.gif)
Есть такое дело, но пишу на Делфях причем база у нас на Оракле. Естессно доступ к данным значительно быстрее.
Делается всё это не очень правильно, в том смысле, что не по канонам программирования, но суть вот в чём:
из галактики формируется файл с параметрами отчета типа запрос и требуемые данные для его формирования дальше вызывается прога которая перерабатывает этот файл и лезет в Оракл и выдает всё это в Xl (написал свой обработчик шаблонов) или в текстовик.
В принципе можно было написать с использование CrystalReports или FastReports
но мне не понравился их механизмы работы с Excel пришлось написать свой.
Вся прога в 500 строк + объктный код функций к Excel + прога доступа к Oracle. Delphi 6.0
Кладется всё это в папку EXE и быстро работает
![Wink ;)](./images/smilies/239.gif)
Опять же НО на данный момент есть первая версия в которой в Excel работа идет через системный буфер что нагружает систему по полной, но всё равно быстрее против Галки,
собираюсь писать вторую версию, сразу как только время появиться.
Общий привет!
![Wink ;)](./images/smilies/239.gif)
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Виктор, видимо Вы не поняли меня.
Имелось ввиду что частенько встречается такая вещь как RunProcess (); где сам процесс реализован на паскале с использованием атлантисовских объектов и т.п.
и хранится этот процесс кажется в *.res или DLL
Вот об этом хотелось пообщаться...
Имелось ввиду что частенько встречается такая вещь как RunProcess (); где сам процесс реализован на паскале с использованием атлантисовских объектов и т.п.
и хранится этот процесс кажется в *.res или DLL
Вот об этом хотелось пообщаться...
Re: Пишем не на VIP, а на Pascal
RunProcess это действительно вызов функций, но тех которые зарегистрированы в VIP.
Весь пирог со стороны смотриться так:
Обыкновенный объектный паскаль а-ля Делфи
который компилит Атлантис то есть набор объектов, методов, свойств, функций и процедур
который компилит VIP и проч языки Галактики в которых используются функции и процедуры которые были зарегистрированы специальным образом.
Т.о. winint.exe компиляция Делфи, а рес это уже компиляция Атлантиса.
Теперь про написание на Паскале, а нет RunProcess это запуск VIP-овских процедур, функций или объектов (чего - точно врать не буду не знаю).
Чтобы запустить Пасквилевскую нужно скомпилить процедуру в dllку или если сможете в winint.exe
дальше зарегистрировать её для VIPа как функцию
а потом пользоваться ей в Vipе как обыкновенной функцией.
Весь пирог со стороны смотриться так:
Обыкновенный объектный паскаль а-ля Делфи
который компилит Атлантис то есть набор объектов, методов, свойств, функций и процедур
который компилит VIP и проч языки Галактики в которых используются функции и процедуры которые были зарегистрированы специальным образом.
Т.о. winint.exe компиляция Делфи, а рес это уже компиляция Атлантиса.
Теперь про написание на Паскале, а нет RunProcess это запуск VIP-овских процедур, функций или объектов (чего - точно врать не буду не знаю).
Чтобы запустить Пасквилевскую нужно скомпилить процедуру в dllку или если сможете в winint.exe
![Wink ;)](./images/smilies/239.gif)
а потом пользоваться ей в Vipе как обыкновенной функцией.
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
можно поподробнее и желательно какой нить супер-простенький примерчик
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Просим, просим... )))
Например такое как реализовать? :
Хочу получить обороты по выбранной организации по указанному бухсчету. (Опять же повторюсь - реализовать не на ВИП а на Дельфах, Пасквиле...)
Например такое как реализовать? :
Хочу получить обороты по выбранной организации по указанному бухсчету. (Опять же повторюсь - реализовать не на ВИП а на Дельфах, Пасквиле...)
Re: Пишем не на VIP, а на Pascal
Ага, ладно поехали дальше, следущее с чем я столкнулся... это было то что Оракловая сессия открыта в Пасквиле Атлантиса а функции и объекты не протранслированы в VIP в полной мере, то есть мы можем пользоваться GetFirst и т.д. но мы не можем сказать Session.SQL.Add('Select * from basedoc;').!
Такое насколько я знаю есть только в 5 атлантисе да и то я не уверен ;(.
Так вот отсюда вывод чтобы получить обороты по счету нужен доступ К БД, а его с той же сессией нет ;(
Но не всё так плохо, можно в функцию передавать параметры подключения если запрашивать у пользователя пароль ;( что не хорошо или сделать свой логин для своих функций. и опять но, в Оракле формированием полей ATL_last... занимаються триггеры который вычисляю значение пользователя по текущей сессии, то есть мы можем получить что кто же послений менял будет неизвестно или это будет 1 логин!
И опять же не всё так плохо, я долго мучался над этим вопросом и пришёл к выводу что функции можно строить только отчетные а если нужно что-то изменить то необходимо передавать запрос на изменение обратно в Галку и менять уже VIP'ом!, а как?
Так теперь разберемся с маленьким супер простеньким примером. Ага, посмотрел на диске всё уже давно стёрто ;( а дело в том что в VIP насколько мне удалось можно передавать простые параметры типа String какой-то ограниченный, Integer ну вообщем всё несложное и с массивами по моему тоже напряжёнка ;( короче как в том анекдоте "а хотите по настоящему потра.." поэтому в программе реализовал передачу параметром через файл в простом виде
название_параметра:значение_параметра.
а вот как регистрировать щаз найду, о помоему все уже позанимались отчетами в Excel, яркий пример такого программирования!
На нём кстати и учился!![Wink ;)](./images/smilies/239.gif)
Чтобы зарегистрировать функцию надо чтобы она была Public и большими буквами, а то у Галактики с этим промблема![Wink ;)](./images/smilies/239.gif)
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);
}
Ну вот пожалуй и всё![Wink ;)](./images/smilies/239.gif)
Есть вопросы? задавайте.
Такое насколько я знаю есть только в 5 атлантисе да и то я не уверен ;(.
Так вот отсюда вывод чтобы получить обороты по счету нужен доступ К БД, а его с той же сессией нет ;(
Но не всё так плохо, можно в функцию передавать параметры подключения если запрашивать у пользователя пароль ;( что не хорошо или сделать свой логин для своих функций. и опять но, в Оракле формированием полей ATL_last... занимаються триггеры который вычисляю значение пользователя по текущей сессии, то есть мы можем получить что кто же послений менял будет неизвестно или это будет 1 логин!
И опять же не всё так плохо, я долго мучался над этим вопросом и пришёл к выводу что функции можно строить только отчетные а если нужно что-то изменить то необходимо передавать запрос на изменение обратно в Галку и менять уже VIP'ом!, а как?
Так теперь разберемся с маленьким супер простеньким примером. Ага, посмотрел на диске всё уже давно стёрто ;( а дело в том что в VIP насколько мне удалось можно передавать простые параметры типа String какой-то ограниченный, Integer ну вообщем всё несложное и с массивами по моему тоже напряжёнка ;( короче как в том анекдоте "а хотите по настоящему потра.." поэтому в программе реализовал передачу параметром через файл в простом виде
название_параметра:значение_параметра.
а вот как регистрировать щаз найду, о помоему все уже позанимались отчетами в Excel, яркий пример такого программирования!
На нём кстати и учился!
![Wink ;)](./images/smilies/239.gif)
Чтобы зарегистрировать функцию надо чтобы она была Public и большими буквами, а то у Галактики с этим промблема
![Wink ;)](./images/smilies/239.gif)
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);
}
Ну вот пожалуй и всё
![Wink ;)](./images/smilies/239.gif)
Есть вопросы? задавайте.
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
допустим на дельфях я длл-ку собрал, как собрать длл на атлантис делфи для регистрации ф-ий для випа?
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Re: Пишем не на VIP, а на Pascal
Я делфёвую длл-ку пихал в EXE
а в VIP писал
function myFunc (string) : string; external 'MY.DLL'
а в VIP писал
function myFunc (string) : string; external 'MY.DLL'