|
|
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь может подсказать, как средствами самого VFP при работе в RUNTIME-ме получить список фалов, которые есть в EXE-ке и затем сохранить любой из файлов, входящих в EXE в отдельном файле. Есть желание использовать FRX - файлы как шаблоны для новых отчетных форм. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 09:56 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Здравствуйте Алексей. Т.Е. у вас в ехе включены frx - отчеты - и вы их хотите извлекать модифицировать и назад включать (причем все это программно) - помоему невыполнимая задача. Проще при компиляции ехе - не включать frx в ехе - программно их юзать . а декомпилить exe-шник - каким нибудь рефоксом. но программно управлять рефоксом - сложно будет. А если вы хотите просто извлечь frx - так декомпилируйте exe refox-ом да и не мучайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 10:23 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Нет, назад в EXE-ник включать, конечно, не надо - да это и не возможно, а вот использовать, как шаблон хочется. Далее, модифицированный самим пользователем FRX - файл будет сохранен уже в другое место (в Image поля на SQL Server), но, как заготовку для нового отчета хотелась бы дать возможность пользователю использовать уже существующие в EXE-ке. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 10:32 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Aleksey-KНет, назад в EXE-ник включать, конечно, не надо - да это и не возможно, а вот использовать, как шаблон хочется. Далее, модифицированный самим пользователем FRX - файл будет сохранен уже в другое место (в Image поля на SQL Server), но, как заготовку для нового отчета хотелась бы дать возможность пользователю использовать уже существующие в EXE-ке. С уважением, Алексей Поскольку модифицировать файлы, включенные в exe-шник нельзя, то выход будет следующим: 1. Открыть frx как обычный dbf-файл, 2. Скопировать куда-нибудь (не забывать про связанный с ним файл frt) 3. Дать пользователю на редактирование копию, полученную в п.2 4. После редактирования - сохранить в каталоге, указанном пользователем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 10:51 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Вот я и спрашиваю, как получить список FRX-файлов, входящих в состав EXE? Что с ним дальше делать, я знаю. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 10:56 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Привет Алексей! А в чем фишка включения FRX в EXE Желание чтобы никто не нагадил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 11:07 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
И какая версия VFP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 11:10 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
valerykaПривет Алексей! А в чем фишка включения FRX в EXE Желание чтобы никто не нагадил? Да. Есть список отчетов, которые нельзя трогать и есть возможность пользователю через мой собственный построитель запросов генерить свои отчеты. При этом сама отчетная форма (FRX- файл) практически не меняется (ну может быть за исключением заголовка). Вот и хочется облегчить работу пользователя, чтобы он не с нуля проектировал FRX, а использовал в качестве шаблона уже существующий отчет. Самое интересное, что FILE() и MODIFY REPORT... c именем FRX, включенно в EXE проходит, а вот как список получить этих самых FRX, включенных в EXE-ку для того, что бы дать возможность выбора, не знаю:). Если только тупой перебор... Может есть метод получше ? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 11:16 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Понял, не парься! Загони 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') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 11:42 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
еще один вопрос связанный с екзешником мой екзешник вчера перестал запускаться... [ошибка]: "Несовпадение версий файла ресурсов" OK [Microsoft Visual FoxPro]: "Visual FoxPro cannot start. Could not load resorces" OK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 12:56 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
valerykaПонял, не парься! Загони 2 файла FRX и FRT в табличку, дальше тяни их через strtofile() Т.е. храни их в таблице и не включай в проект Не.. не годится... Проекту более 6 лет. Над ним работаю не один я... Опять же все файлы проекта под VSS работают. Менять уже нельзя. Ладно, не парься, valeryka. Что-нибудь придумаю. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:25 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
2 Aleksey-K Код: plaintext так может если file() - проходит и adir() пройдет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:47 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Как не странно, ADIR не проходит. Выводится именно список файлов. Видно придется при компиляции проекта формировать текстовый файл со список FRX файлов в проекте (через класс ProjectHook и его событие BeforeBould) и включать его в дистрибутив. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 14:19 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 00:20 |
|
||
|
Список файлов в EXE
|
|||
|---|---|---|---|
|
#18+
Спасибо Igor Korolyov, но я нашел решение проще: 1. Создал DBF таблицу с двумя полями: Name и DESCRIPTION и включил ее в проект с опцией Include 2. В класс ProjectHook, который управляет моим проектом, в его событии BeforeBuild сканирую все файлы отчетов: Код: plaintext 1. 2. 3. (m.oFile.Name в поле Name, а m.oFile.Description в поле DESCRIPTION ) В форме выбора отчетной формы просто читают содержимое этой Read-Only DBF таблицы Вот и все. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 09:55 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=266&tid=1592038]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 345ms |

| 0 / 0 |
