powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / НЕ ИКСУЕТСЯ
6 сообщений из 6, страница 1 из 1
НЕ ИКСУЕТСЯ
    #32213144
wasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VISUAL FOXPRO 5.0

ПОЧЕМУ КОГДА Я ДЕЛАЮ exe ФАЙЛ ОН НЕ ЗАПУСКАЕТСЯ ВЕРНЕЕ
ЗАПУСКАЕТСЯ ПОЯВЛЯЕТСЯ НА МГНОВЕНИЕ ОКНО И ИСЧЕЗАЕТ.
ЕСТЬ-ЛИ У КОГО КАКИЕ СООБРАЖЕНИЯ
...
Рейтинг: 0 / 0
НЕ ИКСУЕТСЯ
    #32213150
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предполагаю, что напрочь отсутствует READ EVENTS.
...
Рейтинг: 0 / 0
НЕ ИКСУЕТСЯ
    #32213721
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все никак не соберусь выложить
===========================
Три наиболее часто встречающиеся вопросы новичков. Звучат они приблизительно так:

Пока я отлаживал приложение в среде FoxPro - все было нормально, но как только создал EXE (или APP) и запустил его, то:

1) Окно FoxPro мелькает на экране и тут же закрывается
2) Не могу выйти из FoxPro. Закрыть приложение. Либо появляется сообщение "Cann't quit Visual FoxPro", либо приложение продолжает висеть в окне задач, хотя на экране ничего не видно
3) При попытке изменить данные в рабочих таблицах появляется сообщение "Cursor is read-only"

Еще раз обращаю внимание, что эти ошибки возникли в готовом EXE (APP), а не на этапе отладки.

*******************************
1) Окно FoxPro мелькает на экране и тут же закрывается
*******************************

Ошибка связана с тем, что не была организована точка останова приложения. Т.е. FoxPro пребывает в недоумении в какой момент необходимо остановиться, чтобы подождать реакции пользователя. На этапе отладки такой точкой останова была сама среда FoxPro, но в готовом EXE ее нет.

Стандартным способом организации точки останова является использование команды READ EVENTS.

Как правило, в качестве главного запускающего объекта используется файл PRG и в нем пишется примерно следующий код:

...
* Предварительные настройки среды FoxPro
...
DO MainMenu.mpr
DO FORM MainForm.SCX
READ EVENTS
...
* Операции по завершению приложения FoxPro и возврату среды в исходное состояние
...

В данном случае использовано одновременная загрузка и главного меню в основном окне FoxPro и запуск некой стартовой формы. При этом предполагается, что форма НЕ модальная (WindowType=0-Modeless).

Выполнение данной процедуры будет остановлено на команде READ EVENTS. Что и позволит работать пользователям в готовом EXE.

При подаче в любом месте программы команды CLEAR EVENTS FoxPro автоматически перейдет к выполнению команд, следующих за READ EVENTS, выполнение главной стартовой программы завершится и приложение FoxPro будет закрыто.

Таким образом, для закрытия приложения необходимо:

-) При использовании главного окна FoxPro с главным управляющим меню предусмотреть в этом меню пункт "Выход", в котором и дать команду CLEAR EVENTS
-) Если главное окно FoxPro не используется (например, при работе с формами ShowWindow=2 - As Top-Level Form), то команду CLEAR EVENTS следует дать при закрытии формы. Лучше всего в событии UNLOAD-формы
-) Для не штатных режимов закрытия приложения прочитать ответ на следующий вопрос


*******************************
2) Не могу выйти из FoxPro. Закрыть приложение. Либо появляется сообщение "Cann't quit Visual FoxPro", либо приложение продолжает висеть в окне задач, хотя на экране ничего не видно
*******************************

Данный вопрос напрямую связан с предыдущим. Дело в том, что при описании выхода из программы в предыдущем вопросе рассмотрен только штатный способ, когда и программист и пользователь все делали "как положено".

Если приложение FoxPro было закрыто, но тем не менее осталось висеть в списке задач (Task Manager открывающийся по Ctrl+Alt+Del), то это значит, что программист не дал команды CLEAR EVENTS.

Сообщение же "Cann't quit Visual FoxPro" появляется при попытке закрыть приложение нажав на крестик в правом верхнем углу основного окна FoxPro или нажав кнопку "End Task" в Task Manager.

Для перехвата этого события в FoxPro предусмотрена настройка ON SHUTDOWN. Т.е. в главной стартовой программе получается примерно такой код:

...
* Предварительные настройки среды FoxPro
* И настройка не штатного выхода из программы
ON SHUTDOWN Do ExitProg
...
DO MainMenu.mpr
DO FORM MainForm.SCX
READ EVENTS
...
* Операции по завершению приложения FoxPro и возврату среды в исходное состояние
* И сброс настройки по не штатному выходу из программы
ON SHUTDOWN
...


PROCEDURE ExitProg
IF MessageBox('Вы действительно хотите закрыть приложение?',4+32+256,'Закрытие приложения')=7
RETURN
ENDIF
...
* Действия по корректному закрытию всех открытых форм
* и откату незавершенных изменений в базе данных
...
CLEAR EVENTS
RETURN


*******************************
3) При попытке изменить данные в рабочих таблицах появляется сообщение "Cursor is read-only"
*******************************

Этот вопрос напрямую не связан с первыми двумя. Причин данной ошибки может быть несколько.

а) Наиболее вероятная причина этой ошибки заключается в том, что Вы включили таблицу DBF внутрь EXE.

Чтобы убедится в этом откройте окно вашего проекта и найдите нужную таблицу. Слева от имени таблицы должен стоять значек перечеркнутого кружочка. Если это не так, то щелкните правой кнопкой мыши по имени таблицы и в появившемся меню выберите пункт "Exclude". После этого перекомпилите проект (заново постройте EXE).

Включение какого-либо файла внутрь EXE осущетсвляется аналогично. Правой кнопкой мыши по имени и в открывшемся меню выбрать пункт "Include".

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

Соотсветсвенно, файл включенный внутрь EXE не надо поставлять клиенту (он и так находится внутри EXE).


б) Еще одной причиной подобной ошибки может являтся перенос базы данных клиенту на лазерном диске. Дело в том, что в момент записи на лазерный диск всем файлам автоматически устанавливают признак Read-Only. Соответсвенно после копирования на жесткий диск к клиенту этот признак необходимо снять.

Правой кнопкой мыши в "Проводнике" (Explorer-Windows) на имени файла, в появившемся меню выбрать пункт "Свойства" (Properties) и снять птичку "Только чтение" ("Read-Only"). Если предварительно выделить несколько файлов, то свойства будут распространены на все выделенные файлы.


в) Более экзотическая причина - это настройка прав доступа пользователей. Возможно папка в которой расположены файлы DBF администратором была выдана в общее пользование со статусом Read-Only. В этом случае необходимо обратится к администратору с просьбой изменить права доступа.
...
Рейтинг: 0 / 0
НЕ ИКСУЕТСЯ
    #32213784
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

Предлагаю выложить в отдельную тему. И еще хорошо бы вопросы выделить, либо болдом, либо цветом.

ЗЫ на очереди я так понимаю SCREEN=OFF и иконки.
...
Рейтинг: 0 / 0
НЕ ИКСУЕТСЯ
    #32213889
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В отдельную тему нет смысла - все-равно ведь "уедет" на другие страницы. В принципе, ее уже выложили

http://kodu.neti.ee/~juri4/vfp60/faq_vm_ru.htm

Хочу еще на nsvisual.com в решения запихнуть.

А писать "глобальный" FAQ думаю нет смысла - судя по опыту разных конференций сначала "стреляют, а потом смотрят кто пришел" в смысле, сначала спросят и только потом, может быть воспользуются поиском.
...
Рейтинг: 0 / 0
НЕ ИКСУЕТСЯ
    #32214046
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

ОК. Все равно спасибо, этот вопрос очень частый, теперь буду ссылаться на этот топик.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / НЕ ИКСУЕТСЯ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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