On-line: PSP, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост N: 2758
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.03.13 18:00. Заголовок: PAGESCRIPT 32 FOR (X)HARBOUR


Пытаюсь прикрутить PageScript 32 к проге на Harbour и облом.
К проге на Xharbour прикрутил нормально (работает)
Есть в TPSCRIPT.PRG (поставляется вместе с библой)

 
#include "PScript.ch"
#include "FileIO.ch"

#ifdef __XHARBOUR__
// 02.06.2005 - IBTC - changed for xHarbour Builder:
#xtranslate Method <Classname>:<x> => Method <x>
#define DLL_STDCALL NIL

#include "hbclass.ch"
#else
#include "Xbp.ch"
#include "Dll.ch"
#endif



Harbour естественно не находит Xbp.ch , Dll.ch , не пойму что делать.

 
===============================================
PAGESCRIPT 32 FOR (X)HARBOUR
===============================================

This file contains important supplementary and
late-breaking information that may not appear
in the main product documentation. We recommend
that you read this file in its entirety.

In order to use PageScript 32 with (x)Harbour,
you'll need to distribute PSCRIPT.DLL with your
programs. We recommand that PSCRIPT.DLL be copied
in the application's folder in order to avoid
DLL versions conflicts.

Three files needs to be included in your (x)Harbour
projects :

1 - DLLCALL.C
2 - TPSCRIPT.PRG
3 - PSCRIPT.CH

DLLCALL.C gives PageScript a way to call DLL functions
in the same way as Xbase++ does. This interface is
contributed by Paul Tucker, Ontario, Canada. Many
thanks to him for this great contribution.

TPSCRIPT.PRG contains all the PageScript 32 functions
and one class, named TPageScript. You may either choose
to call PS functions or instantiate TPageScript and use
its methods. When you use functions, calling PSInit()
automaticaly instanciates a Static TPageScript object.

PSCRIPT.CH contains constants used by PageScript 32.



Что то не пойму она будет вообще с Hаrbour работать http://www.abeelabs.com/pagescript32/index.php
у меня версия 1.3.4.0

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 82 , стр: 1 2 3 4 5 All [только новые]


администратор




Пост N: 6554
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.08.17 15:54. Заголовок: Кстати в сырцах Harb..


Кстати в сырцах Harbour глянь \core-master\extras\ps32\


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 557
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 30.12.17 22:40. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Ваши комментарии приветствуются


Добрый день. Разрешите неск. вопросов:

1) Взял бету с pagescript32.com, погонял тестовый пример - обратил внимание, что после закрытия Print Preview теряется фокус основного окна программы. Приходится возвращаться щелчком мыши или ALT+TAB. Это только у меня? Windows 7 x64. Можно вылечить?

2) Окно Print Preview можно как-то вызывать БЕЗ диалога выбора принтера? Долго искал, как посмотреть результат, не тратя бумагу, сохранял/переоткрывал pdf, пока не понял, что окно выбора принтера выскакивает, но вместо печати за ним идет просмотр...

3) На форуме _https://groups.google.com/forum/#!topic/harbour-users/gnUs9XMBygg некто Richard Visscher утверждает, что PageScript32 будет бесплатным для зарегистрированных пользователей. Что-то изменилось в ценовой политике с августа? Если нет - какие ждать цены, есть информация по предыдущим версиям ?

Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6671
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.12.17 22:43. Заголовок: Тоже интересно..


Тоже интересно

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1225
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.12.17 23:08. Заголовок: Sergy пишет: после ..


Sergy пишет:

 цитата:
после закрытия Print Preview теряется фокус основного окна программы


По-видимому, это проблемы взаимодействия с консолью. Для GUI-приложений такой проблемы нет.

Sergy пишет:

 цитата:
вызывать БЕЗ диалога выбора принтера?


Нет, вызов этого диалога намертво зашит в pagescript DLL

Sergy пишет:

 цитата:
Richard Visscher утверждает


Это новый собственник и разработчик PageScript32
Как он и обещал, он раздает первую публичную бетку DLL версии 3.4.0.105 бесплатно (как рождественский подарок )
Последующие версии, вероятнее всего, будут платными

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6672
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.12.17 10:13. Заголовок: Sergy пишет: обрати..


Sergy пишет:

 цитата:
обратил внимание, что после закрытия Print Preview теряется фокус основного окна программы


чеканул с последней версией с сайта abeelabs , с фокусом все нормально

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 559
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 03.01.18 17:27. Заголовок: С некоторыми вопроса..


С некоторыми вопросами немного разобрался:

+ Если использовать gtwvg - с фокусом окна Preview все ок. Гуд

+ Посмотрел внимательнее - Preview вызывается без диалога принтера. Ничего там не "зашито".

? Сколько все-таки стоил PageScript в "свое время" и как лицензировался: по разработчику или по рабочим местам ?

Возник следующий:

Как-то уже "привык", что сначала я формирую какой-то отчет, а потом предлагаю юзеру - куда его вывести: на экран/принтер/в файл. Без разницы, что это: простой текст, XLS, PDF, DOC. PageScript заставляет указать устройство вывода заранее - ДО СОЗДАНИЯ самого тела документа. Логически я это понимаю: у разных устройств может быть разное разрешение, разные рабочие шрифты, соотв. документ МОЖЕТ выглядеть по-иному. Кто как решал данный вопрос?

Пока что приходит в голову: вместо "прямых" вызовов PSSetFontSize(), PSLine(), PSFrame() и тп... накапливать их некий массив блоков кода, например так:

вместо PSSetFontSize(5) => AADD(aQueue, {||PSSetFontSize(5)})
вместо PSLine(x1,y1,x2,y2) => AADD(aQueue, {||PSLine(x1,y1,x2,y2)})
и тп... после чего = запросить юзера, чего он хочет и "циклом по массиву" выполнить все вызовы.

Но в этой идее не будут "работать" переменные - нужно заменить их конкретным значением в момент помещения в очередь... Коряво как-то... И непонятно, как тогда обрабатывать необходимые значения некоторых функций - например, ширину текста в пикселях...

Что-бы придумать в такой ситуации? Хочется сохранить привычную логику работы программы, вне зависимости от типа документа.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6677
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.01.18 17:42. Заголовок: Sergy пишет: и как ..


Sergy пишет:

 цитата:
и как лицензировался по разработчику или по рабочим места


Вот что удалось вытащить
https://cloud.mail.ru/public/84NB/NTE4TahxH

ЗЫ
Цена была если мне память не изменяет где то в районе 200 $ (+-50 $)

Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 6678
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.01.18 19:30. Заголовок: Sergy пишет: PageSc..


Sergy пишет:

 цитата:
PageScript заставляет указать устройство вывода заранее - ДО СОЗДАНИЯ самого тела документа


Это можно обойти (если я верно понял вопрос) , так как устройство задается в PSBeginDoc , первым параметром.
Поэтому можно до формирования тела документа , запросить доступные принтера + туда же в менюху сунуть
и устройство (предпросмотра).
На вскидку так , выкинь лишнее :)
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 560
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 03.01.18 21:55. Заголовок: Dima пишет: Это мож..


Dima пишет:

 цитата:
Это можно обойти (если я верно понял вопрос) , так как устройство задается в PSBeginDoc , первым параметром.


Я не очень понятно объяснил, сорри...

До знакомства с PageScript у меня было так: Сначала создается сам документ в виде файла (txt, xls, doc, pdf), а затем вызывается диалог с юзером, где предлагается: "куда его выводить: экран/принтер/файл". Стандартно и единообразно. Обработчик вывода на экран, скажем для txt и xls, разумеется, разные. Вот и сижу чешу репу, как быть: вместе с каждым документом, которые планирую готовить через PageScript придется переделывать логику диалога с юзером: сначала "куда выводить", потом формирование тела и собственно, вывод. А если юзер захочет сначала "на экран", а потом "на принтер" - тогда тело документа будет пересоздаваться дважды.

А по ходу создания некоторых отчетов открываются/закрываются таблицы, устанавливаются фильтры/relation и куча прочей мути...



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6681
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.01.18 22:20. Заголовок: Sergy пишет: Снача..


Sergy пишет:

 цитата:
Сначала создается сам документ в виде файла (txt, xls, doc, pdf)


У меня иначе , для отчетов (к примеру) , вызывается диалог в котором задаются условия формирования
и там же указывается формат отчета (txt, xls, doc, pdf)
Надо будет мне доку полистать нового PS32 , может что то есть в этом плане , что тебе нужно.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 561
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 03.01.18 22:44. Заголовок: Кстати заметил, что ..


Кстати заметил, что при любой ошибке в программе во время подготовки документа, дело завершается не только стандартным RTE, но и полным крэшем с созданием "hb_out.log", а Windows "пытается найти способ решения проблемы и предлагает обратиться к разработчику"...

Половинчатое решение содержится в таком коде:
* ----------------------- * 
EXIT PROCEDURE PS32Finish()
//
PSEndDoc()
//
RETURN
Почему половинчатое? Потому что недокументировано. Фиг с ним, с частично заполненным листом бумаги, вылезающим из принтера после RTE. Странно другое - PSAbort() в данном случае не помогает, программа точно так-же крэшится, как и без EXIT PROCEDURE.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6683
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.01.18 22:50. Заголовок: Сыроват однако новый..


Сыроват однако новый PS32 или мне так кажется ?
У меня с прежним таких бяк не было.
Код примерно такой
 
if PSInit() == 0
PSSetClipperComp(.t.)
PSSetPageSize(DMPAPER_A4)
PSBeginDoc(NPrint)
PSSetUnit(APS_MILL)

***** какой то код

PSEndDoc()
else
Soob("PageScript не загружен........","r/r","gr+/r")
endif


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 562
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 03.01.18 23:37. Заголовок: Dima пишет: Сыроват..


Dima пишет:

 цитата:
Сыроват однако новый PS32 или мне так кажется ?


Мне особо не с чем сравнить, ты сам то работаешь с новой версией или со старой, провернной ?

Попробуй туда, где ... какой-то код поставить что то вроде:
...
x := "text string"
x++
...
Интересно посмотреть, что будет.

Да, забыл уточнить: у меня -mt и gtwvg.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6685
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.01.18 23:39. Заголовок: Sergy пишет: со ста..


Sergy пишет:

 цитата:
со старой, провернной ?


с ней старушкой

Sergy пишет:

 цитата:
Да, забыл уточнить: у меня -mt и gtwvg.


и у меня

Sergy пишет:

 цитата:
x := "text string"
x++


Счас пробну :)


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6686
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.01.18 23:41. Заголовок: Dima пишет: Счас пр..


Dima пишет:

 цитата:
Счас пробну :)


Получил BASE 1086 , неверный аргумент ++

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6687
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.01.18 23:43. Заголовок: И далее как ты описа..


И далее как ты описал
А не бывает такого у меня так как код отлажен.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 563
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 04.01.18 16:31. Заголовок: Dima пишет: Получил..


Dima пишет:

 цитата:
Получил BASE 1086 , неверный аргумент ++
И далее как ты описал


Значит дело не в "новизне" версии.

 цитата:
А не бывает такого у меня так как код отлажен.


Круто. У кого нет ошибок в коде - пусть кинет в меня камень ?

Развивать дальше ты его не собираешься? Уверен на 200% в отсутствии своих ошибок в дальнейшем?
Даже если нет ошибок в твоем коде - их нельзя исключать в окружении: драйвер/память/сеть - неужели не глючат никогда ?
А под столом кто-нить пнет ногой системник и из него вывалится на соплях державшийся кабель?

Не то, чтобы я жути нагоняю, но RTE - это предсказуемый и контролируемый ядром Harbour процесс корректного (по возможности) завершения всех запущенных процессов, закрытия таблиц, устройств и тд и тп...
Крэш, аналогичный вызываемому - это пздц с точки зрения сохранности данных и стабильности работы с системой. Возникает в узле внешнего устройства (принтера в данном случае). К чему приведет - никто не знает. Уверен, что нужно всеми средствами избегать подобной ситуации.

Не смог найти форума поддержки PageScript32. Такой есть в природе?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6688
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.01.18 17:00. Заголовок: Sergy пишет: Развив..


Sergy пишет:

 цитата:
Развивать дальше ты его не собираешься?


Пока устраивает то что есть.
Sergy пишет:

 цитата:
Уверен на 200% в отсутствии своих ошибок в дальнейшем?


Нет не уверен , но если нахожу (находят) то фиксю.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6689
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.01.18 17:12. Заголовок: Sergy пишет: Не смо..


Sergy пишет:

 цитата:
Не смог найти форума поддержки PageScript32


Можно пробнуть сюда написать support@pagescript32.com

Sergy пишет:

 цитата:
Крэш, аналогичный вызываемому - это пздц с точки зрения сохранности данных и стабильности работы с системой


Ты в этом уверен ? Мне кажется что после RTE Harbour , сама прога нормально завершается (ну типа с закрытием баз и тд и тп) а далее
начинает завершаться сама DLL со своими ошибками , она ж вроде на делфи.
Как вариант можно обернуть у себя весь код PS32 начиная с PSINIT в Begin Seguence

PS
Что то мне кажется что FastReport поведет себя так же в случае RTE в консольной Harbour проге.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5676
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.01.18 18:26. Заголовок: Dima пишет: Что то ..


Dima пишет:

 цитата:
Что то мне кажется что FastReport поведет себя так же в случае RTE в консольной Harbour проге.



Часто при отладке в МиниГуи форма FastReport ведёт себя непредсказуемо (я писал об этом здесь), приходиться снимать задачу через менеджер задач. Базы после этого ни разу не портились.
На терминалке, при отладке формы тоже при ошибках вываливалась прога.
Поставил простой обработчик ошибок для вывода функций для FastReport
      BEGIN SEQUENCE  WITH { |e|break( e ) }  
RECOVER USING oError
END SEQUENCE

и всё... проблемы исчезли...

Если форму FastReport отладил - то работает как часы, пока никто не жаловался.
Единственно FastReport критичен для принтеров Херокс на ХР, у меня такое было на одном пользователе.
Там что то с печатью хитро получилось, со всех программ печатает, а с FastReport нет.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 82 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 187
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет