Пишем не на VIP, а на Pascal
Модераторы: m0p3e, edward_K, Модераторы
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Пишем не на VIP, а на Pascal
Ребят, кто под Галку ваяет чего нить на Пасквиле... Поделитесь опытом плз... Необходимо сделать отчетец в разрезе контрагентов по указанным счетам, но нужно чтоб он махом формировался - типа аналитической ведомости... А скорость насколько я понял возможна только при работе с таблицами как объектами - напрямую через паскаль... Сам ни разу не трогал эту вещь, посему у кого какой опыт есть - расскажите с чего начать... ???
Заранее признателен.
Заранее признателен.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Быстрота, навреное, будет достигнута за счет того, что .pas будут компилиться в машинный код, в отличие, от написанных на випе-е. А хранятся они в ..\exe\xxx.dll ?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Быстрота, наверное, будет достигнута за счет того, что .pas будут компилиться в машинный код, в отличие, от написанных на випе-е. А хранятся они в ..\exe\xxx.dll ?
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Пишем не на VIP, а на Pascal
Вот я и хочу узнать
а) как начать
б) как компилять
в) куда компилять
и вообще - что за хрень такая вообще...
а) как начать
б) как компилять
в) куда компилять
и вообще - что за хрень такая вообще...
Re: Пишем не на VIP, а на Pascal
Хм, вообщем это про меня
Есть такое дело, но пишу на Делфях причем база у нас на Оракле. Естессно доступ к данным значительно быстрее.
Делается всё это не очень правильно, в том смысле, что не по канонам программирования, но суть вот в чём:
из галактики формируется файл с параметрами отчета типа запрос и требуемые данные для его формирования дальше вызывается прога которая перерабатывает этот файл и лезет в Оракл и выдает всё это в Xl (написал свой обработчик шаблонов) или в текстовик.
В принципе можно было написать с использование CrystalReports или FastReports
но мне не понравился их механизмы работы с Excel пришлось написать свой.
Вся прога в 500 строк + объктный код функций к Excel + прога доступа к Oracle. Delphi 6.0
Кладется всё это в папку EXE и быстро работает .
Опять же НО на данный момент есть первая версия в которой в Excel работа идет через системный буфер что нагружает систему по полной, но всё равно быстрее против Галки,
собираюсь писать вторую версию, сразу как только время появиться.
Общий привет!
Есть такое дело, но пишу на Делфях причем база у нас на Оракле. Естессно доступ к данным значительно быстрее.
Делается всё это не очень правильно, в том смысле, что не по канонам программирования, но суть вот в чём:
из галактики формируется файл с параметрами отчета типа запрос и требуемые данные для его формирования дальше вызывается прога которая перерабатывает этот файл и лезет в Оракл и выдает всё это в Xl (написал свой обработчик шаблонов) или в текстовик.
В принципе можно было написать с использование CrystalReports или FastReports
но мне не понравился их механизмы работы с Excel пришлось написать свой.
Вся прога в 500 строк + объктный код функций к Excel + прога доступа к Oracle. Delphi 6.0
Кладется всё это в папку EXE и быстро работает .
Опять же НО на данный момент есть первая версия в которой в Excel работа идет через системный буфер что нагружает систему по полной, но всё равно быстрее против Галки,
собираюсь писать вторую версию, сразу как только время появиться.
Общий привет!
-
- Абориген
- Сообщения: 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 дальше зарегистрировать её для VIPа как функцию
а потом пользоваться ей в 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, яркий пример такого программирования!
На нём кстати и учился!
Чтобы зарегистрировать функцию надо чтобы она была 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);
}
Ну вот пожалуй и всё
Есть вопросы? задавайте.
Такое насколько я знаю есть только в 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);
}
Ну вот пожалуй и всё
Есть вопросы? задавайте.
-
- Местный житель
- Сообщения: 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'