:: Visual Foxpro, Foxpro for DOS
Re: Too many variables
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Вот я как раз обратное делал для собираемых exe. В проекте было 2 разных конфиг-файла. Один лежал рядом с pjx, и он НЕ включался в проект (зато использовался при открытии этого самого проекта из файл-менеджера на этапе разработки), а второй лежал в какой-то внутренней папке (обычно называемой Other), был включен в проект именно как include и использовался в рантайме - в нём были чуть другие настройки


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Too many variables
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Ну, это дело вкуса, в нашем деле фантазии, лишь бы прибор правильно работал )

В моем случае config один, и при разработке (отладке по шагам), и при работе в рантайме. Подумалось, что пусть я буду отлаживать именно на том config-е, на каком будет работать реальный EXE. Отлаживаю так: запускаю в IDE фокса, для прохода по шагам, непосредственно собранный EXE-шник, т.е. почти что в реальной среде (это не так, конечно, но после некоторых "пассов" становится почти так). Зачем при отладке и при работе разные config-и не могу придумать сходу. Между нами, лучше бы вообще config-а не было ни фига, он не нужен ;)
Ratings: 0 negative/0 positive
Re: Too many variables
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
Зачем при отладке и при работе разные config-и не могу придумать сходу.
Ну вот те самые _COVERAGE, _SCCTEXT и прочие системные переменные обнулить для exe - во-первых в рантайме эти утилиты не нужны (не все! _GENXTAB к примеру может быть нужен, как и 9-ные _REPORT*), во-вторых когда-то я читал что обнуление этих переменных немного ускоряет запуск. Да, то что было актуально 20+ лет назад на всяких Win9x с цельными 128Мб памяти! (где фокс просто "летал" по сравнению с другими "современными" средами разработки, загружавшимися, порой, по паре минут) безнадёжно устарело - но и применял я эти приёмы в те старые времена

Потом RESOURCE=OFF - я почти никогда не использовал ресурсный файл для готовых приложений (и всегда во время разработки - при том ещё часто и отдельный для разных проектов). Да, его можно отключить в коде - но тогда он всё равно сначала создастся (пустой), и лишь потом отключится - плюс известные проблемы с "несовпадающим форматом" foxuser между разными версиями фокса (точно не помню между какими именно были расхождения) - если случайно фокс найдёт где-то "неправильный" foxuser то жди беды. Например от FPD проги - а почти на всех машинах где работали FPD программы путь к ним был прописан в системном path, и VFP таки находил "антикварный" foxuser и ругался на то что надо бы его "обновить" - пугая пользователей, и ломая те самые FPD проги по итогу.

SCREEN=OFF - я давным давно ещё стал делать в программах сплэш-экраны, и если в конфиге не отключить "главное окно", то сплэш появлялся на фоне белого основного окна, и портилась вся эстетика загрузки. Естественно, для IDE эта настройка не нужна вовсе.

Это лишь 3 пункта, по которым имеет смысл держать разные конфиги для IDE и для рантайма.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Too many variables
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Да, Игорь, как ни печально, но ты как всегда прав! С этим RESOURCE в частности.
Действительно, у меня два config-а.

Для IDE (в папке всех моих фоксовых проектов, сюда же указывает рабочая папка, когда я запускаю фокс):
DATE=GERMAN
CENTURY=ON
EXCLUSIV=OFF
CODEPAGE=AUTO
COLLATE=RUSSIAN
CATMAN=off
DELETE=OFF
RESOURCE = C:\FOXPROJ
TMPFILES=C:\TEMP

Вкомпилированный в проект (в некоторой папке, в которой нет фоксовых проектных EXE-шников, т.е. не мешает запуску этих EXE-шников):
;ALLOWEXTERNAL = ON
SCREEN = OFF
TITLE = VFP
CODEPAGE=AUTO
COLLATE=RUSSIAN
RESOURCE = OFF
;TMPFILES=C:\TEMP
;BITMAP = OFF

В папке VFP в PrFiles тоже есть config.fpw, и он участвует, но только тогда, когда я просто запускаю установленный VFP без всяких добавок в командное строке и перенастроек рабочей папки. Но я так обычно не делаю.

Во всех фоксовых программах (проектах), в первых строках делаю SET RESOURCE OF, по выходу - возвращаю как было (и много чего из SET-ов перенастраиваю при запуске, по выходу возвращаю взад, есть запоминалка SET-ов). Это чтобы запускать проект прямо из IDE (с целью пройти по шагам), но не сломать окружение IDE.

> Да, его [RESOURCE] можно отключить в коде - но тогда он всё равно сначала создастся (пустой), и лишь потом отключится
Да? Не замечал, или не помню, когда с ним боролся. Но это из-за того, вероятно, что у меня все же два config-а, готовые EXE-шники запускаются c RESOURCE OFF.

> SCREEN=OFF
Это понятно

> Ну вот те самые _COVERAGE, _SCCTEXT и прочие системные переменные обнулить для exe
Хз что это за звери. Почитаю )

В целом, я погорячился, сказав, что config не нужен. Нужен, как контейнер, хранилище настроек при запуске готового EXE-шника, но можно было бы решить это дело без config-а, а где-то при построении EXE-шника (как бы считать этот файл заранее вкомпилированным в EXE)... Хотя, если APP, то куда?... Ну, нужен, нужен )
В режиме же IDE есть реестр, или куда там фокс записывает настройки Tools-->Option

Извините за оффтоп.



Исправлено 3 раз(а). Последнее : of63, 17.05.20 11:05
Ratings: 0 negative/0 positive
Re: Too many variables
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
COLLATE=RUSSIAN
Мы его включаем только там, где нужен.
Чаще нужно без него
Ratings: 0 negative/0 positive
Re: Too many variables
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Мне всегда нужен, т.к. БД с русскими ФИО, названиями. Он и на сравнение строк в программе влияет вроде (?), в нужную мне сторону.
Ratings: 0 negative/0 positive
Re: Too many variables
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Должно быть как у PINK FLOYD. [sm128]
Ratings: 0 negative/0 positive
Re: Too many variables
akvvohinc
Автор

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Igor Korolyov
Да, его [RESOURCE] можно отключить в коде - но тогда он всё равно сначала создастся (пустой), и лишь потом отключится
Создастся он только в том случае, если в Config явно или по умолчанию стоит
RESOURCE = ON

Если в Config стоит
RESOURCE = OFF
то foxuser не создастся вообще - ни при запуске, ни позже.
И если ресурсного файла после запуска Фокса нет физически (не было в папке и он был отключен в конфиге), то позже по SET RESOURCE он уже не создастся.

Цитата:
плюс известные проблемы с "несовпадающим форматом" foxuser между разными версиями фокса (точно не помню между какими именно были расхождения)
Для VFP они отличались типом одного поля - NAME (стал Memo, в досе был Char).
Достаточно было поменять тип этого поля, чтобы запрос на конвертацию не появлялся, и файл ресурсов становился рабочим.

А вот для FPD все было намного хуже - помимо NAME еще и "чужой" формат Memo-полей, конвертер "на будущее" написать, естественно, не могли, и ресурсный файл просто создавался заново.

Igor Korolyov
если случайно фокс найдёт где-то "неправильный" foxuser то жди беды. Например от FPD проги - а почти на всех машинах где работали FPD программы путь к ним был прописан в системном path, и VFP таки находил "антикварный" foxuser и ругался на то что надо бы его "обновить" - пугая пользователей, и ломая те самые FPD проги по итогу.
Никогда не слышал, чтобы Фокс искал foxuser.dbf по каким бы то ни было путям:
- либо по явно указанному имени в RESOURCE конфига или SET RESOURCE программы;
- либо в папке запускаемого EXE.

PS
Про поиск по путям понял.
Будет искать, если вместо простого SET RESOURCE ON зачем-то указывать
SET RESOURCE TO foxuser.dbf
то есть стандартное имя без полного пути.

Если же стандартное имя без полного пути не писать (а при единственном ресурсе вроде в этом нет смысла), то и искать ресурсный файл по PATH фокс не должен.

В общем, если разработчику без разницы, какой foxuser будет найден, то он может писать имя, не указывая полный путь, и попадать в описанную ситуацию. Иначе достаточно не пользоваться командой SET RESOURCE TO или указывать полный путь к ресурсному файлу, "отменяя" поиск "по путям".
То есть искать foxuser абы где, если в указанном месте его нет, Фокс не должен, а значит, всем управляет только разработчик, и этой проблемы нет.

Единственное неудобство - полный путь может быть неизвестен при запуске (если разраб хочет, чтобы брался ресурсный файл текущей папки и это не папка EXE), и тогда его не удастся указать в Config. Но тогда в Config он отключается, а в программе узнается текущая папка и ресурс подключается с указанием полного пути.



Исправлено 9 раз(а). Последнее : akvvohinc, 17.05.20 19:41
Ratings: 0 negative/0 positive
Re: Too many variables
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
() мтк, нормально заморочили голову девченке ТС? )
Ratings: 0 negative/0 positive
Re: Too many variables
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
akvvohinc
Создастся он только в том случае, если в Config явно или по умолчанию стоит
RESOURCE = ON
Речь про случай когда конфига нет вообще - тогда ресурсный файл создаётся, т.к. по умолчанию действительно работает установка ON.
akvvohinc
Никогда не слышал, чтобы Фокс искал foxuser.dbf по каким бы то ни было путям:
Давно было, и уж что там было или не было в конфигах прописано я не помню, но точно помню что проблема имела место быть.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Too many variables
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
akvvohinc
Никогда не слышал, чтобы Фокс искал foxuser.dbf по каким бы то ни было путям:

Искал и находил ранее кем-то созданный, спрятанный. И эту проблему у нас помнят.
Когда делали объезды с установкой программы, это портило нервы
Ratings: 0 negative/0 positive
Re: Too many variables
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Аналогично, при старте проги вызывалось окно GetFile.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Too many variables
_vit

Сообщений: 5176
Дата регистрации: 29.07.2002
Совет дня.;)

Пользуйтесь утилитой Procmon от Русиновича.

docs.microsoft.com

И будете знать, какие файлы фокс (и не только он) открывает, где ищет и почему не может открыть даже если нашел.

Это был первый инструмент, который я использовал, когда на клиентской машине (да и на своей тоже) вдруг фокс вел себя не так.



Исправлено 1 раз(а). Последнее : _vit, 20.05.20 14:05
Ratings: 0 negative/0 positive
Re: Too many variables
akvvohinc
Автор

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Ydin
Искал и находил ранее кем-то созданный, спрятанный.
Я же написал в PS, при каких условиях этот поиск будет происходить - если указать имя файла, не указывая полный путь к нему.
Так что разраб сам решает, нужен ли ему такой поиск или нет.

PaulWist
Аналогично, при старте проги вызывалось окно GetFile.
А теперь не вызывается?
Покажи, в каком случае автоматически вызывается Getfile.
Хотя какая уж тут аналогия? Аналогия с чем?



Исправлено 1 раз(а). Последнее : akvvohinc, 20.05.20 15:10
Ratings: 0 negative/0 positive
Re: Too many variables
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
akvvohinc
Ydin
Искал и находил ранее кем-то созданный, спрятанный.
Я же написал в PS, при каких условиях этот поиск будет происходить - если указать имя файла, не указывая полный путь к нему.
Так что разраб сам решает, нужен ли ему такой поиск или нет.

Ещё раз: значения SET RESO ON и SET RESO TO foxuser.dbf это значения по умолчанию, они действуют если нет никакого конфига вообще. И именно поэтому конфиг НУЖЕН для избежания конфликта с "левыми" foxuser.dbf расположенными где-то в системном %PATH%. Хотя-бы подавить автооткрытие, чтобы уже в коде программы иметь возможность задать путь к "правильному" ресурсному файлу, и лишь затем "включить" его.

Нет ничего проще чем скомпилировать широко известный эмулятор командного окна фокса (конечно же не включая в него конфиг и не размещая его рядом с exe), и запускать, проверяя где он создаст foxuser, или, что горадо хуже, где он его найдёт и откроет.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Too many variables
akvvohinc
Автор

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Igor Korolyov
Ещё раз: значения SET RESO ON и SET RESO TO foxuser.dbf это значения по умолчанию

Да, похоже разобрался, что у меня было не так.

Я проверял не на EXE, созданном в Фоксе, а на самом vfp.exe.
А при этом помимо конфига есть еще одно место, где может быть прописан путь к ресурсному файлу:
Tools -> Options -> File Locations -> Resource File
Вот там у меня и был прописан путь, по которому автоматически создавался foxuser при отсутствии конфига (или при отсутствии имени ресурсного файла в конфиге) - в папке самого Фокса.



Исправлено 2 раз(а). Последнее : akvvohinc, 21.05.20 01:51
Ratings: 0 negative/1 positive


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

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

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