:: Visual Foxpro, Foxpro for DOS
Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
Опытные Лесоводы, хелп! Занесло меня работать в бюджетную организацию, одна из программ написана на Foxpro для DOS, база DBASE III, и было это очень давно. Я вообще delphi-ст, а по базам MSSQL, Firebird. Потребовалось расширить одно поле, все бы ничего, но оно выводится в отчет со старой длинной. Путем поисков нашел в коде, где это происходит:
REPORT FORM &dr\zp\pe4at\Avans FOR Tab_no>=tb_o1 .AND. Tab_no<=tb_o2
WHILE Otdel=Otd
NOEJECT TO &VName
где &dr\zp\pe4at\Avans файл Avans.f4x, и исходя из формата команды REPORT FORM, является файлом отчета.
Как и чем его отредактировать под новую длину поля?
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
MrDalex
Опытные Лесоводы, хелп!
Лес и лиса - две большие разницы.
Цитата:
Как и чем его отредактировать под новую длину поля?
Тем же самым, чем исполняется программа. Кстати, с чего взяли, что
MrDalex
программ написана на Foxpro для DOS
?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: Модификация отчета .f4x
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Устанавливай FPD нужной версии (последняя 2.6), правда, отчеты (репорты) в ней в файлах .FRX и .FRT, а f4x - не знаю, может из старой версии клон, или другой какой... Фишка в том, что эти файлы репорта суть DBF и FPT (сама таблица и содержимое мемо), которые (при переименовании в DBF и FPT, например) можно смотреть любой смотрелкой DBF
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
of63
f4x - не знаю, может из старой версии клон, или другой какой...

Вероятно, это просто опечатка - у таблиц Фокса никогда не было такого расширения.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
MrDalex
Как и чем его отредактировать под новую длину поля?
Командой MODIFY REPORT <имя-файла-отчета> из командного окна Фокса.
Исполняемый файл Фокса может называться по-разному в зависимости от версии - в FPD 2.6 - foxprox.exe.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
Спасибо всем! f4x - никакой опечатки, в отличии от "Лесоводы") Написана в foxpro для dos, потому как запускается в консоли, выходить нужно через Quit, интерфейс досовский. На авось решил посмотреть его ReFox-ом, оказалось, что F4X - это обычный скомпилированный prg. Получил исходник, поправил что нужно и обратно скомпилировал через командную строку - FOXPROLN.EXE AVANS.PRG, далее AVANS.FXP переименовал в F4X и скормил программе. Все работает, но происходит перенос строки и на лист не помещается. Теперь другой вопрос, размером шрифта управлять можно на уровне одного отчета? Принтер матричный.



Исправлено 2 раз(а). Последнее : MrDalex, 20.11.19 09:14
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Вставляй служебные символы в нужном месте текста, но это принтерозависимая фича. Например, в Epson-DFX CHR(18) включает сжатый шрифт, CHR(15)-широкий.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
MrDalex
f4x - никакой опечатки, в отличии от "Лесоводы") Написана в foxpro для dos, потому как запускается в консоли, выходить нужно через Quit, интерфейс досовский. На авось решил посмотреть его ReFox-ом, оказалось, что F4X - это обычный скомпилированный prg.

Видимо там самописный какой-то обработчик отчетов, заменяющий стандартный.
В стандартном отчет - это таблица. А это возможно что-то вроде вывода через команду "?".


MrDalex
Теперь другой вопрос, размером шрифта управлять можно на уровне одного отчета? Принтер матричный.

Через так называемый язык "ESC-последовательности Epson". ПОиском можно найти все команды. Что-то вроде вот такого: epson.ru
Хотя не все работют на реальных принтерах.
Вот, когда-то специально подобрал и занес в таблицу, сколько символов на строку и в толбец влазит с использованием разных кодов управления, чтобы макетировать данные, исходя из этого (бумага бывала нестандартная, поэтому подборку делал для слегка уменьшенных листов бумаги и для стандартных):

[attachment 32362 1.JPG]


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
Спасибо! Да вывод через '?' "Text" AT №_Позиции. А что делает вот такая команда '??' "Text" AT №_Позиции?



Исправлено 1 раз(а). Последнее : MrDalex, 20.11.19 10:25
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
MrDalex
Спасибо! Да вывод через '?' "Text" AT №_Позиции. А что делает вот такая команда '??' "Text" AT №_Позиции?
То же самое, но без перехода на новую строку.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
MrDalex
Получил исходник, поправил что нужно и обратно скомпилировал через командную строку - FOXPROLN.EXE AVANS.PRG, далее AVANS.FXP переименовал в F4X и скормил программе. Все работает

Или я всё забыл, или вам только кажется, что вы что-то сделали с отчетом.

Во-первых, непонятно, с чего вы решили что в команде:
REPORT FORM &dr\zp\pe4at\Avans FOR Tab_no>=tb_o1 .AND. Tab_no<=tb_o2
WHILE Otdel=Otd NOEJECT TO &VName
вызывается нечто с именем Avans.f4x?

Только с того, что нашли файл с этим именем?
Команда REPORT FORM работает с файлом отчета, а не с программным файлом, каким является ваш переименованный FXP (кстати, пока непонятно, зачем все эти сложности с переименованиями).

Вы же сами вначале правильно написали
MrDalex
исходя из формата команды REPORT FORM, является файлом отчета

Файл отчета - это вовсе не программный файл, который вы правили (совпадение имен - не более того).

Программный файл с именем Avans.f4x тоже, конечно, где-то вызывается, но не этой командой. Причем, поскольку вы дали нестандартное расширение программе, то вызываться она должна с явным указанием этого расширения.
Как я уже писал выше, Фокс никогда не имел дела с расширением f4x, не знает, что это такое, и по умолчанию вызывать Avans.f4x не будет.
(речь, конечно, о родном Фоксе, а не о пропатченном каким-либо образом)

Ну, а то, что у вас "всё работает", вполне может объясняться исправлениями в программном файле. Судя по названию, именно он подготавливает данные для отчета, а изменения в собственно отчете могут и не понадобиться.

Если вам всё же понадобится править сам отчет - ищите файлы с именами Avans.frx, Avans.frt и изменяйте его командой MODIFY REPORT Avans.

PS
Кстати, чтобы что-то напечатать, совсем не обязательно иметь файл отчета - документ можно создать и напечатать исключительно программой, что похоже у вас и происходит, судя по командам вывода ? и ??.
А наличие в коде команды REPORT FORM не обязательно означает, что эта команда отрабатывает. Возможно, это вообще другой отчет или другая версия того же отчета, вызывающаяся при каком-то условии...



Исправлено 10 раз(а). Последнее : akvvohinc, 20.11.19 15:13
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
akvvohinc
Во-первых, непонятно, с чего вы решили что в команде:
REPORT FORM &dr\zp\pe4at\Avans FOR Tab_no>=tb_o1 .AND. Tab_no<=tb_o2
WHILE Otdel=Otd NOEJECT TO &VName
вызывается нечто с именем Avans.f4x?
Любых других файлов с этим именем нет.

akvvohinc
кстати, пока непонятно, зачем все эти сложности с переименованиями.
В первом посте я писал, что все это досталось мне в наследство, причем исходники автор забрал. Все что дорабатывалось, делалось через ReFox и не мною, до недавнего времени.

akvvohinc
Программный файл с именем Avans.f4x тоже, конечно, где-то вызывается, но не этой командой. Причем, поскольку вы дали нестандартное расширение программе, то вызываться она должна с явным указанием этого расширения.
Как я уже писал выше, Фокс никогда не имел дела с расширением f4x, не знает, что это такое, и по умолчанию вызывать Avans.f4x не будет.
Поиском с вхождением текста '.f4x' не нашлось ни одного файла, включая бинарные.

akvvohinc
Ну, а то, что у вас "всё работает", вполне может объясняться исправлениями в программном файле. Судя по названию, именно он подготавливает данные для отчета, а изменения в собственно отчете могут и не понадобиться.
Подготавливаются данные в DBF-файл в том же модуле, где и вызов REPORT FORM, а F4R выводит данные командами '?' и '??',

akvvohinc
Если вам всё же понадобится править сам отчет - ищите файлы с именами Avans.frx
Ни оного файла .frx не существует.

akvvohinc
А наличие в коде команды REPORT FORM не обязательно означает, что эта команда отрабатывает. Возможно, это вообще другой отчет или другая версия того же отчета, вызывающаяся при каком-то условии...
Если в коде убрать REPORT FORM, ничего не происходит и не создается файл для печати.
Я не знаю пока как это работает, но работает 100%.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
MrDalex
Если в коде убрать REPORT FORM, ничего не происходит и не создается файл для печати.

Знаю одно - REPORT FORM не может выполнять программный файл, ему требуется файл отчета.
Поэтому он либо должен создаваться на лету, либо появляться каким-либо другим способом - например, переименованием чего-то с последующим удалением.
В приложении, где вызываемые программы принудительно получают нестандартные расширения, все возможно.

MrDalex
Поиском с вхождением текста '.f4x' не нашлось ни одного файла, включая бинарные.
Судя по приведенному фрагменту, в приложении активно используются макроподстановки.
Если требование расширения f4x для программных файлов - для того, чтобы "запутать" возможных "взломщиков", то текст f4x может нигде не встретиться явно - достаточно где-то создать строковую переменную с таким значением, например, каким-нибудь таким "мудреным" способом:
m.ext = CHR(102)+'4'+SUBSTR('47567x0',6,1)
А затем везде ее использовать.

Если вы пришлете ваши программы (все или часть, включая головную) - хоть PRG, хоть FXP (как f4x), я смогу сказать наверняка, как у вас это всё работает.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
Отправил ссылки через ЛС. Если для понимания нужны еще какие-либо файлы, вышлю.



Исправлено 1 раз(а). Последнее : MrDalex, 21.11.19 10:33
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
Не вижу причин, чтобы не выложить все здесь.
Головной файл - yadi.sk
Файл avans.prg - yadi.sk
Там, по логике, в зависимости от условий, в REPORT FORM вызываются и другие файлы, все они f4x. Не суть, механизм тот-же.



Исправлено 2 раз(а). Последнее : MrDalex, 22.11.19 09:38
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Тогда и я продублирую ЛС здесь:

Программы бегло посмотрел, пока ничего интересного (объясняющее работу REPORT FORM) не увидел.
Хотелось бы посмотреть весь список файлов (с расширениями) (DIR), лежащих в папке:
&dr\zp\pe4at\

Посмотрю список, возможно, попрошу прислать какие-то файлы.

Также не помешал бы конфигурационный файл Фокса - Config.fp или что-то подобное (название может быть и другим).

Приложение работает только через исходники? EXE не создается?
Вызов примерно такой?
foxproln veda
(пришлите полную строку запуска программы или содержимое BAT-файла, если он используется)
Все ли программы лежат как F4x или есть PRG и FXP?

Например есть такой вызов программы
DO &dr\ZP\PE4AT\PROP_NUM.PRG WITH SS

Если в папке нет файла PROP_NUM.PRG или PROP_NUM.FXP, то "нормальный" Фокс не запустит PROP_NUM.F4X по этой команде (я даже проверил это на всякий случай ).

Конечно, проще всего было бы посмотреть полностью работоспособную версию приложения.
Если у вас есть возможность прислать ВСЁ, но с "пустой" или демонстрационной БД, то это бы сразу решило все проблемы.

Файлы отчетов действительно могут иметь другие расширения. Управляет этим настройка в config.fp
REPORT = <расширение для файлов отчетов>
(для программных файлов аналогичной настройки нет).

Но это никак не отменяет того факта, что в команде REPORT FORM указывается имя файла отчета (это по сути DBF-файл), а не имя программного файла.

Поэтому пришлите файлы с именами:
avans
avansp
avansd
kvit
rod_pl
zpl
z13

со всеми расширениями, которые встретятся.

Желательно в том виде, в котором они были до ваших последних действий.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
Запуск приложения через bat:
keyrus
foxproln m -t

Config.fp
mvcount=385
mvarsiz=25
status=on
dele=on

CONFIG.FSV
mvcount=32
mvarsiz=3

akvvohinc
Все ли программы лежат как F4x или есть PRG и FXP?
PRG и FXP много и в разных папках.

Лучше я подготовлю файлы и вышлю все, проект не маленький. Не передумали возиться?)
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
MrDalex
Не передумали возиться?)
Ну чтоб уж совсем не забыть молодость... Ждем-с.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
MrDalex
Автор

Сообщений: 13
Дата регистрации: 19.11.2019
Ок, думаю в понедельник уже.
Ratings: 0 negative/0 positive
Re: Модификация отчета .f4x
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
MrDalex
foxproln m -t

То есть головная программа называется "m"?
А ранее вы писали (и прислали её), что головная - VEDA.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 51 (Гостей: 51)

© 2000-2024 Fox Club 
Яндекс.Метрика