:: Visual Foxpro, Foxpro for DOS
Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Всем привет.

У меня проект (VFP8) всего из одного файла my.prg, он же main.
Никакого интерфейса не должно появляться.
Программа (*.exe) должна отрабатывать бесшумно и по исполнении самоликвидироваться.

Что прописать в начале и в конце проги.

Вот конфигурационный файл
config.fpw:
CODEPAGE=1251
RESOURCE=OFF
TMPFILES=C:\TEMP
HOURS=24
SCREEN=OFF

Чтобы exe запускалась без установки VFP, рядом с исполнительным файлом будут лежать следующие файлы:
[attachment 27925 one_prg_main.GIF]



Исправлено 2 раз(а). Последнее : AdamAry, 04.07.17 11:38
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
AdamAry
Что прописать в начале и в конце проги.
SET DEBUG OFF
...
READ EVENTS


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
После:
SET DEBUG OFF
...
READ EVENTS
при Rebuild project появляется
*.err:
Compiling d:\my.prg
CLEAR EVENTS
Error in line 116: Statement is not in a procedure.

при Win32 executable / COM server (exe) появляется
то же самое:
Compiling d:\my.prg
READ events
Error in line 116: Statement is not in a procedure.
Ты пробовал хоть то, что написал?



Исправлено 5 раз(а). Последнее : AdamAry, 04.07.17 12:34
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
AdamAry
Compile error in file "name" (Error 1981)
You have attempted to add stored procedures to a database
with the FROM clause of the APPEND PROCEDURES command,
from a file which cannot be successfully compiled.
Check that the file contains valid code.

Ты пробовал хоть то, что написал?
Прежде чем наезжать может быть стоит сначала разобраться в его ли коде дело? Мжет таки у самого рыльце в пушку?

------------------
Лень - это неосознанная мудрость.
Ratings: 2 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Всего лишь спросил он тестил или нет.



Исправлено 5 раз(а). Последнее : AdamAry, 07.07.17 07:40
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
dimuhametov
AdamAry
Что прописать в начале и в конце проги.
SET DEBUG OFF
...
READ EVENTS
Ну это если он что-то асинхронное там будет делать, то надо. А если тупо прокрутить какой-нибудь цикл, то не надо READ EVENTS. Цикл прокрутит, сам вывалится. Но я б всё-таки QUIT в конце работы поставил бы.
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
AdamAry
После:
SET DEBUG OFF
...
READ EVENTS
при Rebuild project появляется
*.err:
Compiling d:\my.prg
CLEAR EVENTS
Error in line 116: Statement is not in a procedure.
Я охереваю в этом зоопарке. Вам подсказали, что нужно использовать READ EVENTS. Вы кроме этого совета самостоятельно неправильно воткнули CLEAR EVENTS. И давай на "плохие" советы грубыми словами ругаться: "ты сам-то хоть пробовал?". Да пробовал, конечно, просто Help читал глазами и мозгом, а не как обычно.
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
То же самое:
Compiling d:\my.prg
READ events
Error in line 116: Statement is not in a procedure.

Если ты пробовал почему у тебя не появляется такая же ошибка?
У тебя нормально компилится exe?

Не думаю что VFP8, на которой я это запускаю, сильно отличается от VFP9.



Исправлено 4 раз(а). Последнее : AdamAry, 04.07.17 12:41
Ratings: 1 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
AdamAry
Что прописать в начале и в конце проги.

Я бы что-нибудь про фаготов написал.

И в середине проги тоже.
Ratings: 0 negative/2 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
AdamAry
Не думаю что VFP8, на которой я это запускаю, сильно отличается от VFP9.
Это не зависит от VFP8/9. Только от того, кто как хелп по CLEAR EVENTS прочитал.
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
spinz
AdamAry
Что прописать в начале и в конце проги.

Я бы что-нибудь про фаготов написал.

И в середине проги тоже.
[color=Gray][/color]
Дал ответ в том же духе или "Пойди туда - не знаю куда, принеси то - не знаю что".


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
AdamAry
То же самое:
Compiling d:\my.prg
READ events
Error in line 116: Statement is not in a procedure.

Если ты пробовал почему у тебя не появляется такая же ошибка?
У тебя нормально компилится exe?

Не думаю что VFP8, на которой я это запускаю, сильно отличается от VFP9.
Ты не поверишь, компилится без проблем мой "гениальный" код


------------------
Незнание делает жизнь такой интересной.




Исправлено 1 раз(а). Последнее : dimuhametov, 04.07.17 13:26
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
AdamAry
Ни на кого не наезжал. Всего лишь спросил он тестил или нет.
Как он мог это тетстить с ВАШИМ кодом? Вы сообщение об ошибке читали? Оно про его код?
Цитата:
Так, уважающий себя кодер хоть раз да и запустит прежде чем отправлять в виде ответа то, что вообще не работает (есть конечно исключения из правил когда пишут со смартфона).
Много генальподсказчиков либо ничего не подскажут либо дадут ни разу не запущенный код,
А что, тут был предложен полный код? Вы запускаете только то, что он написал?
Цитата:
это просто возмутительно,
Да, возмутительно, когда профан что-то свое горбатое налепит из ответов на такие вот горбатые вопросы и потом возмущается, что ему дают нерабочие ответы.
Цитата:
ещё и удивляются типа "а чё ты хошь", да могут ещё встав в позу спросить а што ты сам этого не знаешь: ну раз спросил на форуме стало быть к тому что не знаю, токмо зачем переводить своё время псевдоответами?
Для профанов любой ответ - псевдоответ. Ибо они не понимают, что им отвечают.
Цитата:
Просто я задал вопрос,
Как всегда .... не очень умный.
Цитата:
ответ не верен,
А вы знаете верный ответ? И нас просто поверяете?
Цитата:
насколько я могу верить компилятору VFP8,
Вы еще не научились читать и, главное, правильно понимать прочитанное.
Цитата:
а насчёт пушка, я думаю это к тем кто забивает гениальпустотой топики вместо обычных нормальных ответов: только не понятно чего они хотят или просто у них какие либо проблемы с общением, может скучно?
А может в очередной раз кто-то сел в лужу?
Цитата:

Вот если я не знаю ответ, ну, не отвечаю ради красного словца
и хотел бы попросить всех не отвечать если не знают.
Хотеть можно, Попросить можно. Только вот кто и как может определить наличие правильного ответа на идиотский, да к тому же еще и не полностью озвученный вопрос? Ну чтобы понять, стОит отвечать или нет?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
#DEFINE DEF_CRLF CHR(13)+CHR(10)
#DEFINE DEF_DEBUG VERSION(2)=2
SET DEBUG OFF
SET DATE GERMAN
SET POINT TO "."
SET ASSERTS OFF
SET CENTURY OFF
SET DECIMALS TO 2
SET DELETED ON
SET HOURS TO 24
SET NULLDISPLAY TO ""
SET RESOURCE OFF
SET TALK OFF
ON SHUTDOWN CLEAR EVENTS && Если нас ось выгонять будет
poTimer = NEWOBJECT("tTimer")
READ EVENTS
ON SHUTDOWN
IF !DEF_DEBUG
QUIT
ENDIF
DEFINE CLASS tTimer AS Timer
Ticks = 5
Enabled = .T.
Interval = 1000
FileName = "1.txt"
PROCEDURE Init
STRTOFILE("Started" + DEF_CRLF, This.FileName, 1)
STRTOFILE(TTOC(DATETIME()) + DEF_CRLF, This.FileName, 1)
ENDPROC
PROCEDURE Timer
STRTOFILE(TTOC(DATETIME()) + DEF_CRLF, This.FileName, 1)
This.Ticks = This.Ticks - 1
IF This.Ticks = 0
This.Enabled = .F.
CLEAR EVENTS && Наработались.
ENDIF
ENDPROC
ENDDEFINE
Только если это тупая утилитка, которая файлики подвигала пару секунд и выпала, то READ EVENTS нафиг не нужен.
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
Понял, спасибо PASHA_USUE, отличный пример и образец прекрасного стиля, вот это работает!:
Надо использовать какой нибудь класс и уже внутри функции классa писать CLEAR EVENTS для выхода (либо выход по условию как реализовал Павел, либо ставить просто в конце процедуры),
а сразу после объявления экземпляра класса ставить READ EVENTS.


Цитата:
Только если это тупая утилитка, которая файлики подвигала пару секунд и выпала, то READ EVENTS нафиг не нужен.
Т.е. можно вообще не использовать ReadEvents и ClearEvents для однопрограммных exe, которые работают не долго?



Исправлено 4 раз(а). Последнее : AdamAry, 04.07.17 15:32
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
dimuhametov
"Пойди туда - не знаю куда, принеси то - не знаю что".

Да, действительно я упустил текст самой программы, которая должна выполняться.
Пусть в теле программы будет например
strtofile("A", "B.txt")

В реальности у меня идёт запуск COM объекта и результаты записываются в текстовый файл плюс в конце программы есть одна функция.



Исправлено 2 раз(а). Последнее : AdamAry, 06.07.17 07:22
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
AdamAry
Понял, спасибо PASHA_USUE, отличный пример и образец прекрасного стиля, вот это работает!:
Надо использовать какой нибудь класс и уже внутри функции классa писать CLEAR EVENTS для выхода (либо выход по условию как реализовал Паша, либо ставить просто в конце процедуры),
а сразу после объявления экземпляра класса ставить READ EVENTS.
На самом деле этот пример имеет смысл исключительно с таймером. Если внутри вашего класса крутится какая-то мега-процедура обработки и не прерывается на обработчик событий системы, то смысла в READ EVENTS и ON SHUTDOWN CLEAR EVENTS нет никакого.

Если всё-таки хочется, что б программа не "зависала" по мнению системы, то надо периодически в большом обработчике делать DOEVENTS. То-есть надо любым способом отдавать время на обработку системных событий. Либо через таймер, либо через DOEVENTS. И не перестараться, раз в 200 мс - вполне нормально.
Ratings: 0 negative/1 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
ssa
Просто я задал вопрос,
Как всегда .... не очень умный.
Решает сообщество насчёт степени доходчивости вопроса.
Вот Павел быстро дошёл до сути и дал отменный ответ с использованием класса
и по всей видимости я буду использовать его подход для
создания однопрограммных проектов.
Цитата:
Только вот кто и как может определить наличие правильного ответа на идиотский,
да к тому же еще и не полностью озвученный вопрос?
"Спроси своё сердце .... "



Исправлено 1 раз(а). Последнее : AdamAry, 04.07.17 15:50
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
AdamAry
Автор

Сообщений: 843
Дата регистрации: 14.12.2015
pasha_usue
На самом деле этот пример имеет смысл исключительно с таймером. Если внутри вашего класса крутится какая-то мега-процедура обработки и не прерывается на обработчик событий системы, то смысла в READ EVENTS и ON SHUTDOWN CLEAR EVENTS нет никакого.
мега-процедура это имеется в виду большая процедура, не так ли?
Т.е. в простых случаях, когда нет необходимости выходить, остановив работу программы нажатием ESC,
READ EVENTS и ON SHUTDOWN CLEAR EVENTS использовать не нужно.

Цитата:
Если всё-таки хочется, что б программа не "зависала" по мнению системы, то надо периодически в большом обработчике делать DOEVENTS. То-есть надо любым способом отдавать время на обработку системных событий. Либо через таймер, либо через DOEVENTS. И не перестараться, раз в 200 мс - вполне нормально.
Спасибо Павел, не знал, что для уиндоуз, чтобы она не думала что это зависание, надо периодически запускать DOEVENTS.
Извиняюсь, но мне трудно представить как это реализовать, не мог бы показать простой пример ".... надо любым способом отдавать время на обработку системных событий. Либо через таймер, либо через DOEVENTS. ...."



Исправлено 1 раз(а). Последнее : AdamAry, 04.07.17 15:51
Ratings: 0 negative/0 positive
Re: Что прописать в начале и в конце единственной в проекте main проги
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
AdamAry
У меня проект (VFP8) всего из одного файла my.prg, он же main.
Никакого интерфейса не должно появляться.
Программа (*.exe) должна отрабатывать бесшумно и по исполнении самоликвидироваться.
Что прописать в начале и в конце проги.
Ничего. Т.е. буквально ничего не нужно "добавлять". Будут исполнены ровно те команды которые прописаны в этом самом файле, и как только исполнение дойдёт до конца главного модуля (того кода который написан в самом начале файла, до любых DEFINE CLASS или PROCEDURE/FUNCTION), программа завершится.
AdamAry
TMPFILES=C:\TEMP
Без особой надобности эту настройку трогать не следует. Фокс сам использует путь из переменной среды %TEMP% для размещения своих временных файлов.
AdamAry
Чтобы exe запускалась без установки VFP, рядом с исполнительным файлом будут лежать следующие файлы:
gdiplus.dll не нужно таскать начиная с WindowsXP SP3 - она уже "встроена" в систему, и с большой долей вероятности там будет более новый, и значит более надёжный и безопасный файл чем положишь ты.
Кто такие libipriv и Tools - одному тебе известно. Фоксу эти библиотеки не нужны. Равно как и msvcp70. А вот msvcr70 нужна. Для некоторых функций фоксу могут понадобиться и другие библиотеки, в частности msxml4 - но их так просто уже невозможно "положить рядом с exe" - нужно регистрировать в реестре, или добавлять к фоксовому exe специальный манифест - технология RegFreeCom.


------------------
WBR, Igor
Ratings: 0 negative/1 positive


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

On-line: 17 Rifat PaulWist Sergey_K  (Гостей: 14)

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