powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Список файлов в EXE
15 сообщений из 15, страница 1 из 1
Список файлов в EXE
    #33619111
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь может подсказать, как средствами самого VFP при работе в RUNTIME-ме получить список фалов, которые есть в EXE-ке и затем сохранить любой из файлов, входящих в EXE в отдельном файле.
Есть желание использовать FRX - файлы как шаблоны для новых отчетных форм.
С уважением, Алексей
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619196
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте Алексей.
Т.Е. у вас в ехе включены frx - отчеты - и вы их хотите извлекать модифицировать и назад включать (причем все это программно)
- помоему невыполнимая задача.
Проще при компиляции ехе - не включать frx в ехе - программно их юзать .
а декомпилить exe-шник - каким нибудь рефоксом. но программно управлять рефоксом - сложно будет.
А если вы хотите просто извлечь frx - так декомпилируйте exe refox-ом да и не мучайтесь.
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619234
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, назад в EXE-ник включать, конечно, не надо - да это и не возможно, а вот использовать, как шаблон хочется.
Далее, модифицированный самим пользователем FRX - файл будет сохранен уже в другое место (в Image поля на SQL Server), но, как заготовку для нового отчета хотелась бы дать возможность пользователю использовать уже существующие в EXE-ке.
С уважением, Алексей
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619324
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KНет, назад в EXE-ник включать, конечно, не надо - да это и не возможно, а вот использовать, как шаблон хочется.
Далее, модифицированный самим пользователем FRX - файл будет сохранен уже в другое место (в Image поля на SQL Server), но, как заготовку для нового отчета хотелась бы дать возможность пользователю использовать уже существующие в EXE-ке.
С уважением, Алексей
Поскольку модифицировать файлы, включенные в exe-шник нельзя, то выход будет следующим:
1. Открыть frx как обычный dbf-файл,
2. Скопировать куда-нибудь (не забывать про связанный с ним файл frt)
3. Дать пользователю на редактирование копию, полученную в п.2
4. После редактирования - сохранить в каталоге, указанном пользователем...
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619349
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот я и спрашиваю, как получить список FRX-файлов, входящих в состав EXE?
Что с ним дальше делать, я знаю.
С уважением, Алексей
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619410
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет Алексей!

А в чем фишка включения FRX в EXE

Желание чтобы никто не нагадил?
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619423
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И какая версия VFP?
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619454
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valerykaПривет Алексей!

А в чем фишка включения FRX в EXE

Желание чтобы никто не нагадил?
Да. Есть список отчетов, которые нельзя трогать и есть возможность пользователю через мой собственный построитель запросов генерить свои отчеты. При этом сама отчетная форма (FRX- файл) практически не меняется (ну может быть за исключением заголовка). Вот и хочется облегчить работу пользователя, чтобы он не с нуля проектировал FRX, а использовал в качестве шаблона уже существующий отчет.
Самое интересное, что FILE() и MODIFY REPORT... c именем FRX, включенно в EXE проходит, а вот как список получить этих самых FRX, включенных в EXE-ку для того, что бы дать возможность выбора, не знаю:). Если только тупой перебор...
Может есть метод получше ?
С уважением, Алексей.
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619579
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял, не парься!

Загони 2 файла FRX и FRT в табличку, дальше тяни их через strtofile()
Т.е. храни их в таблице и не включай в проект

Ну для наглядности ...


CREATE CURSOR currep (name c(20), frx m,frt m)
lcfrxstr=FILETOSTR('c:\inosale\report\tovch1.frx')
lcfrtstr=FILETOSTR('c:\inosale\report\tovch1.frt')
INSERT INTO currep values('tovch1',lcfrxstr,lcfrtstr)

STRTOFILE(currep.frx,'c:\inosale\report\tovch1_.frx')
STRTOFILE(currep.frt,'c:\inosale\report\tovch1_.frt')
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33619969
qqqqqqqqqqqqqqq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще один вопрос связанный с екзешником

мой екзешник вчера перестал запускаться...

[ошибка]: "Несовпадение версий файла ресурсов" OK
[Microsoft Visual FoxPro]: "Visual FoxPro cannot start. Could not load resorces" OK
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33620120
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valerykaПонял, не парься!

Загони 2 файла FRX и FRT в табличку, дальше тяни их через strtofile()
Т.е. храни их в таблице и не включай в проект

Не.. не годится...
Проекту более 6 лет. Над ним работаю не один я... Опять же все файлы проекта под VSS работают. Менять уже нельзя.
Ладно, не парься, valeryka. Что-нибудь придумаю.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33620212
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Aleksey-K

Код: plaintext
Самое интересное, что FILE() и MODIFY REPORT... c именем FRX, включенно в EXE проходит, а вот как список получить этих самых FRX, 

так может если file() - проходит и adir() пройдет ?
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33620341
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как не странно, ADIR не проходит. Выводится именно список файлов.
Видно придется при компиляции проекта формировать текстовый файл со список FRX файлов в проекте (через класс ProjectHook и его событие BeforeBould) и включать его в дистрибутив.

С уважением, Алексей
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33625531
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Aleksey!

Exe при сборке шифруется? "Защиты" применяются?
Если нет, то видимо поможет нижеследующая информация.
Код для frx я не знаю (не применяю я фоксовые отчёты, да и exe/app вообще-то
не строю), но это легко посмотреть в твоём app/exe
exe состоит из "загрузчика", за которым идёт app - начало app можно узнать
несколькими способами - и просмотрев PE заголовок exe-ника (он
документирован - а app естественно начинается сразу за последней описанной
секцией exe), и считав последние десяток байт файла - там тоже есть размер
app блока (правда если применяется защита, то эта информация может быть
искажена), и даже забив константой - для определённой версии фокса, и
определённого набора параметров сборки (в частности иконки) это смещение
постоянно.
Если app зашифрован то конечно возникают сложности :) Хотя алгоритм
шифрования и не сложен, но всё-же проще видимо будет решать задачу несколько
иным путём.
(Извиняюсь, не помню какие теги отвечают за представление текста
равноширинным шрифтом)

Незашифрованный файл начинается сигнатурой #FE F2 FF 20 02
Зашифрованный файл начинается сигнатурой #FE F2 EE xx xx
байты 3-4 после расшифровки должны стать 20 02 (возможно 20 01 или 20 00)

п.1 Формат заголовка фоксового файла (fxp, app)
-------------------------------------------------------------------------------------------------
¦Смещение¦Длинна¦Имя¦Значение
¦
¦ Hex ¦ байт ¦ ¦
¦
¦--------+------+---+---------------------------------------------------------------------------¦
¦ 1-й заголовок ¦
¦
¦00 ¦ 2 ¦ ¦ Сигнатура фоксового файла
¦
¦02 ¦ 1 ¦ ¦ Флаг шифрации - если он равен FF файл не зашифрован,
если EE - зашифрован ¦
¦03 ¦ 2 ¦ ¦ Маркер версии? 2002, 2001 или 2000
¦
¦05 ¦ 2 ¦MOD¦ Количество модулей (включенных файлов) внутри данного
файла ¦
¦07 ¦ 2 ¦ ¦ Номер (0-базированный индекс) "главного" (Main) модуля
¦
¦09 ¦ 4 ¦ ¦ Адрес начала таблицы модулей
¦
¦0D ¦ 4 ¦ ¦ Адрес начала списка имён (модулей и папок),
используемый в таблице модулей¦
¦11 ¦ 4 ¦ ¦ Длинна списка имён (разность двух предыдущих полей)
¦
¦15 ¦ 16 ¦ ¦ Массив "случайных" данных, используемых для
определения ключа дешифрации ¦
¦25 ¦ 2 ¦ ¦ Байт маска для определения ключа дешифрации
¦
¦27 ¦ 2 ¦ ¦ CRC заголовка (считается для первых 37 байт, т.е. от
00 до 24) ¦
-------------------------------------------------------------------------------------------------

Далее идут объектные модули и/или "включенные" файлы. Каждый такой модуль
описан в таблице, расположенной в конце файла. Для всех модулей не
являющихся объектными (например для включенных таблиц, в т.ч. и
scx/vcx/frx), содержимое модуля полностью соответствует содержимому
исходного файла. Для объектного модуля однако используется специальный
формат, описанный ниже.
fxp файл в отличие от app всегда состоит только из одного модуля -
модуля объектного кода.

После всех модулей идёт список имён модулей и папок - это простой список
null-terminated строк.
Его содержимое используется совместно с таблицей модулей, следующей сразу
за ним.

п.2 Формат таблицы модулей
MOD элементов, каждый из которых имеет следующую структуру
-------------------------------------------------------------------------------------------------
¦Смещение¦Длинна¦Имя¦Значение
¦
¦ Hex ¦ байт ¦ ¦
¦
¦--------+------+---+---------------------------------------------------------------------------¦
¦00 ¦ 1 ¦ ¦ Код типа модуля. см. п.3 для расшифровки
¦
¦01 ¦ 4 ¦ ¦ Смещение до начала соответствующего модуля
¦
¦05 ¦ 4 ¦ ¦ Смещение до конца соответствующего модуля
¦
¦09 ¦ 4 ¦ ¦ Смещение (в списке имён) до начала каталога размещения
файла ¦
¦0D ¦ 4 ¦ ¦ Смещение (в списке имён) до начала имени файла
¦
¦11 ¦ 4 ¦ ¦ ???
¦
¦15 ¦ 4 ¦ ¦ ???
¦
-------------------------------------------------------------------------------------------------

п.3 Таблица расшифровки кодов типов модулей
-------------------------------------------------------------------------------------------------
¦Код типа¦Расшифровка
¦
¦--------+--------------------------------------------------------------------------------------¦
¦00 ¦ Объектный модуль
¦
¦01 ¦
¦
¦02 ¦ dbf файл
¦
¦03 ¦ любой memo файл (fpt, vct, sct)
¦
¦04 ¦ cdx файл
¦
¦05 ¦
¦
¦06 ¦ Прочие файлы (картинки, тексты)
¦
¦07 ¦
¦
¦08 ¦ vcx файл
¦
¦09 ¦ scx файл
¦
-------------------------------------------------------------------------------------------------

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Список файлов в EXE
    #33626344
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Igor Korolyov, но я нашел решение проще:
1. Создал DBF таблицу с двумя полями: Name и DESCRIPTION и включил ее в проект с опцией Include
2. В класс ProjectHook, который управляет моим проектом, в его событии BeforeBuild сканирую все файлы отчетов:
Код: plaintext
1.
2.
3.
FOR EACH m.oFile IN Application.ActiveProject.Files
     IF m.oFile.Type == "R"

...
и добавляю их в DBF
(m.oFile.Name в поле Name, а m.oFile.Description в поле DESCRIPTION )

В форме выбора отчетной формы просто читают содержимое этой Read-Only DBF таблицы
Вот и все.

С уважением, Алексей
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Список файлов в EXE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]