On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 5855
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.05.18 21:33. Заголовок: Вылет из программы...


Всем привет !
Как можно в МиниГуи программе сделать вызов своих функций при аварийном завершении программы (т.е. при вылете) ?
Т.е. хочу сделать сразу после появления MsgBox() вызов 2-3 функций и потом сделать DbCloseAll().
Как это реализовать ?

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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 173 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]


moderator




Пост N: 2107
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.02.23 18:44. Заголовок: Andrey пишет: Прога..


Andrey пишет:

 цитата:
Прога вываливатся там где всегда работала.


Andrey
Единственное, что приходит в голову, это - замена Харбора из поставки сборки 23.02 на Харбор из сборки 22.12
Надеюсь, это поможет решить проблему...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7310
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.02.23 18:51. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Единственное, что приходит в голову, это - замена Харбора из поставки сборки 23.02 на Харбор из сборки 22.12


Спасибо ! Попробую.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7343
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.03.23 15:44. Заголовок: Блин, опять полная ..


Блин, опять полная
У заказчика прога на МиниГуи стала очень медленно работать... Комп быстрый, у заказчика, система Win10.
Таблицы строит быстро, а вот при открытие карточки (показ одной записи) - очень медленно 30-50 секунд.
У меня открывается за 1-5 секунд.
В чем может быть проблема ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7347
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.03.23 15:07. Заголовок: Установил новую верс..


Установил новую версию - 23.02 (Update 4)
Примеры собираются и работают, а моя большая система собирается и сразу вылетает !!!
Предыдущая версия - 23.01 (Release) работает без проблем.
Вылет такой:
Error BASE/1004 Message not found: TWNDDATA:EVENT Args: [1] = O TWNDDATA 
--------------------------------- Stack Trace ---------------------------------
Called from __ERRRT_SBASE(0)
Called from TWNDDATA:ERROR(0)
Called from (b)HBOBJECT(0)
Called from TWNDDATA:MSGNOTFOUND(0)
Called from TWNDDATA:EVENT(0)
Called from MAIN(205) in module: Source\main.prg

Код простой:
   DEFINE WINDOW Form_Main                ; 
AT 0,0 WIDTH 640 HEIGHT 480 ;
TITLE cTitle ICON cIcon ;
MAIN NOSHOW ;
NOMAXIMIZE NOSIZE NOCAPTION ;
ON INIT { || DoEvents(), _wPost(0) } ;
ON INTERACTIVECLOSE { || IIF( lStaticErrorClose, MyExit(), Nil ) }
? PROCNL(), "внутри DEFINE WINDOW Form_Main"
.....
WITH OBJECT This.Object
:Event( 0, {| | _logfile(.t.,"----[ Событие 0 ]--- " + ProcNL() ) ,;
MsgInfo("Запуск события 0"), MyInitForm() } ) // строка 205
.....
END WINDOW

Form_Main.Timer_1.Enabled := .F. // ОТКЛЮЧИТЬ таймер
? PROCNL(), "_DefineSplashWindow()"
_DefineSplashWindow( "Form_Splash",,,,, "SPLASH", 10, {|| IIF( !lStaticErrorClose, Addition_MainForms(), Nil ) } )

ACTIVATE WINDOW Form_Splash, Form_Main

Return Nil


И ПЕРЕСТАЛА работать _DefineSplashWindow(...), так как прога сразу идёт на ON INIT { || DoEvents(), _wPost(0) }
Как это исправить ?

Вот логи запуска программы:
в старой версии прога запускается и _DefineSplashWindow() отрабатывает.
  Вызов из: MAIN(178) --> Source\main.prg   внутри DEFINE WINDOW Form_Main    
Вызов из: MAIN(230) --> Source\main.prg _DefineSplashWindow()
Вызов из: _DEFINESPLASHWINDOW(266) --> Source\main.prg
Вызов из: _SPLASHDELAY(334) --> Source\main.prg
и т.д.

А в новой версии (23.02-4) вот так:
  Вызов из: MAIN(161) --> Source\main.prg   M->aRunCheck=  ARRAY[23]    
Вызов из: MAIN(167) --> Source\main.prg .F.
Вызов из: MAIN(178) --> Source\main.prg внутри DEFINE WINDOW Form_Main
====================> ОШИБКА при завершении программы ! MyExitError() <=====
Error BASE/1004 Message not found: TWNDDATA:EVENT
Args:
[1] = O TWNDDATA
Called from __ERRRT_SBASE(0)
Called from TWNDDATA:ERROR(0)
Called from (b)HBOBJECT(0)
Called from TWNDDATA:MSGNOTFOUND(0)
Called from TWNDDATA:EVENT(0)
Called from MAIN(206) in module: Source\main.prg

Не доходит до функции _DefineSplashWindow(), просто вылетает с ошибкой !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7348
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.04.23 07:43. Заголовок: Беру в папку C:\..


Беру в папку C:\MiniGUI (с версией 23.02-4) записываю папку Harbour от версии 23.01
Проект собирается и работает.
Блин и что за фигню сделали в этой версии Харбора ?
2 дня геморроя и проблема частично решена.
А как быть в дальнейшем ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2120
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.04.23 13:57. Заголовок: Andrey пишет: что з..


Andrey пишет:

 цитата:
что за фигню сделали в этой версии Харбора ?


Из списка изменений Харбора следует, что были сделаны важные изменения и оптимизации в ядре виртуальной машины и была затронута функция AClone().
Также был расширен обработчик ошибок xhb_ErrorNew в библиотеке xHB и почищен модуль symbol range checking для классов Харбора.
Что именно так повлияло на твою программу, остается только догадываться

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7349
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.04.23 15:28. Заголовок: Спасибо БОЛЬШОЕ ! Я ..


Спасибо БОЛЬШОЕ !
Я забыл уточнить, что использую BCC 5.5 ! Может из-за этого облом происходит.
Не могу перейти на BCC 5.8 - иконки на менюшках не те отображаются.
Уже и от ошибок всех избавился, всё равно иконки не те отображаются, которые должны быть.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7368
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.04.23 13:03. Заголовок: Рано радовался. На н..


Рано радовался.
На новой версии 23.04 (Release) прога при старте "вылетает"...
Выдаёт такую ошибку:
Error BASE/1004  Message not found: TWNDDATA:EVENT 
Args:
[1] = O TWNDDATA
Called from __ERRRT_SBASE(0)
Called from TWNDDATA:ERROR(0)
Called from (b)HBOBJECT(0)
Called from TWNDDATA:MSGNOTFOUND(0)
Called from TWNDDATA:EVENT(0)
Called from MAIN(204) in module: Source\main.prg

Вот код программы:
    SET EVENTS FUNCTION TO MyEventsHandler  // проверка версии программы  

DEFINE WINDOW Form_Main ;
MAIN NOSHOW ;
....
// общее событие для вызова из других программ
:Event(111, {|ow,xPar,cdata| ;
cdata := hb_defaultValue(cdata, "") ,;
_logfile(.t.,"----[ Событие 111 ]--- " + ProcNL() ) ,;
_logfile(.t.," ow=",ow,"xPar=",xPar,"cdata=",cdata ) ,;
_logfile(.t.," ow:Name",ow:Name,"ow:Handle",ow:Handle ) ,;
OnWmCopyData(cData) } ) // строка 204
....
// Обработчик событий программы
FUNCTION MyEventsHandler( hHwnd, nMsg, wParam, lParam )
LOCAL cData, nDataID

IF nMsg == WM_COPYDATA

cData := GetMessageData( lParam, @nDataID )
DO EVENTS

// общее событие для вызова из других программ с формы Form_Main
_wPost(111, "Form_Main", cData)

RETURN 1 // выполненно nMsg == WM_COPYDATA, обрабатывать nMsg больше не надо

ENDIF

RETURN Events( hHwnd, nMsg, wParam, lParam)

И чего в новой версии исправлено ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4271
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.04.23 17:55. Заголовок: Andrey Попробуй так..


Andrey
Попробуй так (возможно WM_COPYDATA пришло когда объекта окна не было)
 
FUNCTION MyEventsHandler( hHwnd, nMsg, wParam, lParam )
LOCAL cData, nDataID, oWnd

IF nMsg == WM_COPYDATA

cData := GetMessageData( lParam, @nDataID )
DO EVENTS

// общее событие для вызова из других программ с формы Form_Main
oWnd := _WindowObj( "Form_Main" )
IF HB_ISOBJECT(oWnd) ; _wPost(111, oWnd, cData)
ENDIF

RETURN 1 // выполненно nMsg == WM_COPYDATA, обрабатывать nMsg больше не надо

ENDIF

RETURN Events( hHwnd, nMsg, wParam, lParam)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7369
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.04.23 19:04. Заголовок: Не помогает... Тако..


Не помогает...
Такой же вылет !!!


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7370
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.04.23 00:20. Заголовок: Если ставлю коммента..


Если ставлю комментарий на
   //SET EVENTS FUNCTION TO MyEventsHandler  // проверка версии программы   

То опять "вылет" проги и другая ошибка:
Error BASE/1001 Неизвестная функция: EVENTS Args: [1] = N 723514 [2] = N 129 [3] = N 0 [4] = N 1701896  
--------------------------------- Stack Trace ---------------------------------
Called from EVENTS(0)
Called from INITWINDOW(0)
Called from _DEFINEWINDOW(0)
Called from MAIN(164) in module: Source\main.prg

код вот такой:
   DEFINE WINDOW Form_Main                  ; 
AT 0,0 WIDTH 640 HEIGHT 480 ;
TITLE cTitle ICON cIcon ;
MAIN NOSHOW ;
NOMAXIMIZE NOSIZE NOCAPTION ;
ON INIT { || IniGetPosWindow(,,"MAIN"), MyInitForm() } ;
ON INTERACTIVECLOSE { || IIF( lStaticErrorClose, MyExit(), Nil ) } // строка 164

И что ему не нравиться в этом коде ?
P.S. Замена на Харбор - Version: 3.2.0dev (r2301231146) убирает эту проблему...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7380
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.05.23 18:51. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо исп. в модальных окнах
_HMG_InplaceParentHandle := hWnd // hWnd - окна родителя
... // после action модального окна
_HMG_InplaceParentHandle := 0
иначе у modal окна родитель будет main window (default и вероятно фокус убегает на него)


Как быть если вызывается подряд 3 модальных окна ?
_HMG_InplaceParentHandle := 0 поставим, а другие модальные окна уже не смогут быть привязанными к родительскому окну, будут привязаны к main window

Раньше этим вообще не заморачивался, а в новых версиях МиниГуи приходится самому отслеживать,
модальное окно скрывается под WINDOWTYPE STANDARD окном.
Можно как то привязывать все модальные окна которые вызываются из WINDOWTYPE STANDARD на это окно ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4274
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.05.23 19:03. Заголовок: Andrey пишет Раньше ..


Andrey пишет
 цитата:
Раньше этим вообще не заморачивался, а в новых версиях МиниГуи приходится самому отслеживать


Не придумывай, все окна в Гуи имеют родителя, начиная от DeskTop и до контролов (это тоже окна с родителем окном, на котором созданы) и от версии МиниГуи это не зависит.

 цитата:
Как быть если вызывается подряд 3 модальных окна ?


Всем окнам присваивай handle окна родителя.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7381
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.05.23 19:33. Заголовок: SergKis пишет: Всем..


SergKis пишет:

 цитата:
Всем окнам присваивай handle окна родителя.


Т.е. после создания окна делаю:
 
DEFINE WINDOW &cFormName At 0, 0 ;
WINDOWTYPE STANDARD ;
....
_HMG_InplaceParentHandle := ThisWindow.Handle
...
END WINDOW
....
_HMG_InplaceParentHandle := 0

И больше не о чём не забочусь ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4275
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.05.23 19:54. Заголовок: Andrey пишет И больш..


Andrey пишет
 цитата:
И больше не о чём не забочусь ?


Если так сделаешь для трех modal окон и вызывать их будешь с окна STANDARD по одному, то да.
А если modal окна вызываешь друг за другом последовательно, то нет. Надо перед каждым
модальным окном делать
FUNCTION Standard1()
...
DEFINE WINDOW &cFormName ... STANDARD ...
...
BUTTON ...ACTION Modal1()
...
RETURN Nil
FUNCTION Modal1()
...
_HMG_InplaceParentHandle := ThisWindow.Handle
...
DEFINE WINDOW &cFormName MODAL ...
...
BUTTON ...ACTION Modal2()
...
RETURN Nil
FUNCTION Modal2()
...
_HMG_InplaceParentHandle := ThisWindow.Handle
...
DEFINE WINDOW &cFormName MODAL ...
...
BUTTON ...ACTION Modal3()
...
RETURN Nil
FUNCTION Modal3()
...
_HMG_InplaceParentHandle := ThisWindow.Handle
...
DEFINE WINDOW &cFormName MODAL ...
...
BUTTON ...ACTION ...
...
RETURN Nil
т.к. вызовы ф-ий происходят в событиях окна или контролов, то
_HMG_InplaceParentHandle := ThisWindow.Handle
всегда будет handle окна на котором нажали кнопку, например, для вызова след. окна

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7382
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.05.23 21:56. Заголовок: Понял. Спасибо ! :s..


Понял. Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7383
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.05.23 17:04. Заголовок: Бьюсь уже какой меся..


Бьюсь уже какой месяц с сервером терминалов на Windows Server 2008 R2
Вылетает прога в одном месте постоянно через 2-3 раза по выбору из справочника.

Причём прогу смог протестировать на другом точно таком же сервере.
Там прога работает без вылетов.

Только сейчас дошло до меня, где не работает прога у пользователя урезанный доступ,
а где работает полный доступ.

Как это может влиять на работу программы МиниГуи ?

Но с другой стороны вообще не понятка, одна и таже функция вызывает справочник города и улиц.
Города выбираются всегда, а как улицу выбрал, прога вешается, окно закрылось и висит, без ошибки.
Если потом нажать любую кнопку на другой форме, то тогда вылет проги.
Но почему прога висит ? Форма не закрылась ? Что ещё проге нужно ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1641
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 27.05.23 21:59. Заголовок: Andrey пишет: Тольк..


Andrey пишет:

 цитата:
Только сейчас дошло до меня, где не работает прога у пользователя урезанный доступ,
а где работает полный доступ.


Ну так дай нужные права или админа попроси.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7384
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.05.23 15:27. Заголовок: PSP пишет: Ну так д..


PSP пишет:

 цитата:
Ну так дай нужные права или админа попроси.


Админ дал права, все равно виснет.
Окно закрывается и прога висит....
Почему окно закрылось и управление дальше в программу не даёт ?

Делаю вывод в лог вот так:
 
DEFINE WINDOW Form_SelDim
....
ON RELEASE {|| _logfile(.t., SPACE(8)+"+-o-+ :Event(99)"+ProcNL(),"ON RELEASE =", 1, "Завершена работа формы=",cFormName ) ,;
_logfile(.t., SPACE(8)+"+-o-+ Form:", HMG_GetForms(), HB_ValToExp(HMG_GetForms()) ), DoEvents() }

Вывод в лог файл есть, а дальше прога "ВИСИТ"...
      +-o-+ :Event(99)Вызов из: (b)FORM_SELDIM2(80) --> Sel_Dim_Hmg2frm.prg   ON RELEASE=1  Завершена работа формы=Form_SelDim 
+-o-+ Form: ARRAY[6] { ...., "Form_SeekAdr", "Form_SelDim"}

А окно "Form_SelDim" и не закрылось !!!

P.S. Ещё заметил такую странность, если выбор осуществлять мышкой то окно НЕ ВЕШАЕТСЯ, а если через ENTER, то окно ПОВЕСИТЬСЯ.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2134
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.05.23 12:21. Заголовок: Andrey пишет: окно ..


Andrey пишет:

 цитата:
окно "Form_SelDim" и не закрылось


Значит, надо пробовать закрывать его в цикле, например
 
DO WHILE IsWindowDefined(Form_SelDim)
Form_SelDim.Release
ENDDO

Andrey пишет:

 цитата:
если через ENTER, то окно ПОВЕСИТЬСЯ


Можно попробовать временно переназначить действие ENTER на другую клавишу, например
 
:UserKeys(VK_RETURN, {|ob| _wPost( 2, ob:cParentWnd), .F. })

заменить на

:UserKeys(VK_F10, {|ob| _wPost( 2, ob:cParentWnd), .F. })

также можно попробовать использовать функцию _wSend() вместо _wPost().

Понятно, что это только предложения для пробы

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 173 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 9
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет