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




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


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

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

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


постоянный участник




Пост N: 3893
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.09.21 18:16. Заголовок: Петр пишет oHmgData(..


Петр пишет
 цитата:
oHmgData() это псевдофункция класса THmgData, возвращающая объект класса.


Андрею это мало, что говорит. Всегда у него SET OOP ON и ему нужна "рыба"

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




Пост N: 3894
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.09.21 07:57. Заголовок: Haz пишет Сколько же..


Haz пишет
 цитата:
Сколько же переделывать


Может такая переделка быть (поменьше править кода) и берем из _HMG_aControlIds[ k ]
 
{|ow| myFunc(ow) }
FUNCT myFunc(oWnd)
LOCAL oBr := This.oBrw.Object // oBrw
...
SET WINDOW THIS TO oWnd:Name
oBr := This.oBrw.Object
SET WINDOW THIS TO


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




Пост N: 1773
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 19.09.21 08:46. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может такая переделка быть


У меня оч редко после исполнения блока терялся алиас и выдавал alias not found и пропадала переменная public . Возможно это и есть сборщик. Проблема решилась частыми вызовами doEvents()

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




Пост N: 7068
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.09.21 09:00. Заголовок: Вроде не в тему, а м..


Вроде не в тему, а может и в эту тему - аварийное завершение программы !

Я в программу у себя поставил текстовый файл ловушку ошибки.
Т.е. при старте программы создаётся файл ErrDATA+TIME.log
если нет ошибки, то при выходе удаляю этот файл.

Смотрю у юзеров куча таких файлов, но внутри нет ошибок.
Наверное ВЫХОД из программы делают аварийно, т.е. тупо закрывают сессию терминального сервера.
Блин, а можно как то узнать у себя в программе, что юзер тупо закрыл сессию или перегрузил комп ?
Т.е. программа завершается аварийно.
Что-то на форуме вроде писали об этом, но я не помню.

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




Пост N: 3898
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.09.21 13:33. Заголовок: Andrey пишет Блин, а..


Andrey пишет
 цитата:
Блин, а можно как то узнать у себя в программе, что юзер тупо закрыл сессию или перегрузил комп ?


обрабатывай сообщения (как ты делал WM_COPYDATA)
WM_ENDSESSION
WM_QUERYENDSESSION

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




Пост N: 7084
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.10.21 23:13. Заголовок: SergKis пишет: обра..


SergKis пишет:

 цитата:
обрабатывай сообщения (как ты делал WM_COPYDATA)
WM_ENDSESSION
WM_QUERYENDSESSION


Спасибо ! Займусь этим чуть позже....

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




Пост N: 7126
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.21 16:12. Заголовок: SergKis пишет: обра..


SergKis пишет:

 цитата:
обрабатывай сообщения (как ты делал WM_COPYDATA)
WM_ENDSESSION
WM_QUERYENDSESSION


А ещё какие нужно сообщения обрабатывать в своей программе ?
Снятие из Диспетчера задачи - это какое сообщение будет ?
Кто что использует ? Поделитесь опытом.

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




Пост N: 7127
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.11.21 17:24. Заголовок: Сделал тест что прои..


Сделал тест что происходит с программой.
Запуск, снятие, закрытие сессии и т.д.
Пишет в лог всегда, потом можно смотреть что было с программой и с юзером "бодаться" !
Вроде работает.
Что ещё не учёл, посмотрите ?
Скрытый текст

А когда прога упадёт по ошибке системной что будет срабатывать ?
ELSEIF nMsg == WM_SYSTEMERROR - это будет писаться в лог ?

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




Пост N: 1946
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.11.21 23:16. Заголовок: Andrey пишет: Что е..


Andrey пишет:

 цитата:
Что ещё не учёл


Возможно, обработчик событий должен выглядеть так:
 FUNCTION App_OnEvents( hHwnd, nMsg, wParam, lParam )  

LOCAL cData, nDataID

IF nMsg == WM_COPYDATA

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

// это ключ\ID для проверки правильности полученных данных
//IF nDataID == APP_ID

// общее событие для вызова из других программ с формы Form_Test
//_wPost(111, "Form_Test ", cData)
? HB_TSTOSTR( HB_DATETIME() ) , "Event arrived - WM_COPYDATA", ProcNL() ; ? "."

RETURN 1

ELSEIF nMsg == WM_ENDSESSION
? HB_TSTOSTR( HB_DATETIME() ) , "Event arrived - WM_ENDSESSION", ProcNL() ; ? "."
RETURN 1

ELSEIF nMsg == WM_QUERYENDSESSION
? HB_TSTOSTR( HB_DATETIME() ) , "Event arrived - WM_QUERYENDSESSION", ProcNL() ; ? "."

ELSEIF nMsg == WM_CLOSE
? HB_TSTOSTR( HB_DATETIME() ) , "Event arrived - WM_CLOSE", ProcNL() ; ? "."

ELSEIF nMsg == WM_QUIT
? HB_TSTOSTR( HB_DATETIME() ) , "Event arrived - WM_QUIT", ProcNL() ; ? "."
RETURN 0

ELSEIF nMsg == WM_SYSTEMERROR
? HB_TSTOSTR( HB_DATETIME() ) , "Event arrived - WM_SYSTEMERROR", ProcNL() ; ? "."
RETURN 1

ELSEIF nMsg == WM_DESTROY
? HB_TSTOSTR( HB_DATETIME() ) , "Event arrived - WM_DESTROY", ProcNL() ; ? "."

ENDIF

RETURN Events( hHwnd, nMsg, wParam, lParam)

и функция выхода из программы изменена для обработки события ON INTERACTIVECLOSE следующим образом:
 STATIC FUNCTION myExitPrg(cVal)  

LOCAL nI, cFileLog := _SetGetLogFile()
DEFAULT cVal := ""

IF Form_Test.Btn_Exit.Enabled
Form_Test.Btn_Exit.Enabled := .F.
ENDIF

IF Empty( cVal )
For nI := 20 to 1 Step -1
This.Label_1.Value := "Closing a program through " + HB_NtoS(nI)
DO EVENTS
wApi_Sleep(200)
Next
? HB_TSTOSTR( HB_DATETIME() ) , "Closing the program", ProcNL() ; ? "."
DbCloseAll()
ENDIF

//wApi_Sleep(1200)
//ShellExecute(0,"Open",cFileLog,,,SW_SHOWNORMAL)

RETURN .T.


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




Пост N: 7128
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.11.21 23:33. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Возможно, обработчик событий должен выглядеть так:


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

А нигде больше такой лог и не видел ни у кого....
Размещайте у себя в библиотеке, может кому понадобиться сейчас или потом.

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


Пост N: 376
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 17.11.21 12:31. Заголовок: Andrey пишет: А ниг..


Andrey пишет:

 цитата:
А нигде больше такой лог и не видел ни у кого....



Application
===========
Path and name: E:\FWH\samples\testxbr3.exe (32 bits)
Size: 4,393,984 bytes
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212)
FiveWin version: FWH 20.12
C compiler version: Borland/Embarcadero C++ 7.3 (32-bit)
Windows version: 6.2, Build 9200

Time from start: 0 hours 0 mins 3 secs
Error occurred at: 17-11-2021, 11:59:46
Error description: Error DBCMD/2001 Workarea not in use: DBSKIP

Stack Calls
===========
Called from: => DBSKIP( 0 )
Called from: testxbr3.prg => ADOBRWALLCOLSWIN( 402 )
Called from: testxbr3.prg => (b)MAINMENU( 109 )
Called from: .\source\classes\MENU.PRG => TMENU:COMMAND( 1560 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:COMMAND( 1141 )
Called from: .\source\classes\MDIFRAME.PRG => TMDIFRAME:COMMAND( 272 )
Called from: => TMDIFRAME:HANDLEEVENT( 0 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3559 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 1097 )
Called from: testxbr3.prg => MAIN( 55 )

System
======
CPU type: Intel(R) Core(TM) i7-10870H CPU @ 2.20GHz 2208 Mhz
Hardware memory: 16173 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 3
1 ,
2 GDI+ Window (testxbr3.exe), C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.22000.318_none_1634a27527742bf
3 HardwareMonitorWindow, E:\FWH\samples\testxbr3.exe

Variables in use
================
Procedure Type Value
==========================
DBSKIP
Param 1: N 11
Local 1: U
Local 2: B {|| ... }
ADOBRWALLCOLSWIN
Local 1: O Class: TMDICHILD
Local 2: O Class: TXBROWSE
Local 3: U
Local 4: O Class: TOLEAUTO
Local 5: O Class: TOLEAUTO
Local 6: O Class: TBRUSH
(b)MAINMENU
Param 1: O Class: TMENUITEM
TMENU:COMMAND
Param 1: N 20006
Local 1: O Class: TMENU
Local 2: O Class: TMENUITEM
TWINDOW:COMMAND
Param 1: N 20006
Param 2: N 0
Local 1: O Class: TMDIFRAME
Local 2: N 0
Local 3: N 20006
Local 4: N 0
Local 5: U
TMDIFRAME:COMMAND
Param 1: N 20006
Param 2: N 0
Local 1: O Class: TMDIFRAME
Local 2: L .F.
TMDIFRAME:HANDLEEVENT
Param 1: N 273
Param 2: N 20006
Param 3: N 0
_FWH
Param 1: N 0
Param 2: N 273
Param 3: N 20006
Param 4: N 0
Param 5: N 1
Local 1: O Class: TMDIFRAME
WINRUN
Param 1: N 1049798
TMDIFRAME:ACTIVATE
Param 1: C "NORMAL"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: U
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: U
Param 18: U
Param 19: U
Param 20: L .F.
Local 1: O Class: TMDIFRAME
Local 2: U
Local 3: U
MAIN
Local 1: O Class: TMDIFRAME
Local 2: O Class: TFONT
Local 3: O Class: TBRUSH

Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFCDX
DBFNTX

DataBases in use
================
1: SM RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 500 .F. .F.

Indexes in use TagName
ID ID
UPPER(FIRST) FIRST
UPPER(LAST) LAST
UPPER(STREET) STREET
UPPER(CITY) CITY
UPPER(STATE) STATE
UPPER(ZIP) ZIP
HIREDATE HIREDATE
MARRIED MARRIED
AGE AGE
SALARY SALARY
UPPER(NOTES) NOTES

Relations in use

Classes in use:
===============
1 ERROR
2 HASHENTRY
3 HBCLASS
4 HBOBJECT
5 TWINDOW
6 TCONTROL
7 TGET
8 TBRUSH
9 TFONT
10 TMDIFRAME
11 TMENU
12 TREG32
13 TMENUITEM
14 TMDICLIENT
15 TMSGBAR
16 TRECT
17 TOLEAUTO
18 TMDICHILD
19 TXBROWSE
20 TXBRWCOLUMN
21 TSCROLLBAR
22 TBTNBMP
23 TCLIPBOARD
24 TSTRUCT

Memory Analysis
===============
604 Static variables

Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes

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




Пост N: 7129
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.11.21 12:55. Заголовок: Большой в смысле, чт..


Большой в смысле, что ни у кого не видел причину выхода из программы !
Вот так, как сейчас сделано:
2021-11-15 22:40:20.454 Launching the program   Call from: MAIN(52) --> demo.prg  
2021-11-15 22:40:34.640 Closing the program Call from: MYEXITPRG(101) --> demo.prg
.
2021-11-16 17:15:48.704 Launching the program Call from: MAIN(52) --> demo.prg
2021-11-16 17:16:13.468 Event arrived - WM_QUERYENDSESSION Call from: APP_ONEVENTS(142) --> demo.prg
.
2021-11-16 17:16:13.730 Event arrived - WM_ENDSESSION Call from: APP_ONEVENTS(138) --> demo.prg
.
2021-11-16 17:32:33.815 Launching the program Call from: MAIN(48) --> demo.prg
2021-11-16 17:32:41.487 Closing the program Call from: MYEXITPRG(96) --> demo.prg
.
2021-11-17 12:49:00.523 Launching the program Call from: MAIN(48) --> demo.prg
2021-11-17 12:49:11.420 Event arrived - WM_CLOSE Call from: APP_ONEVENTS(141) --> demo.prg

WM_CLOSE - это программа снята через Диспетчер задач
WM_ENDSESSION - программа закрыта через перезагрузку компа.
Т.е. все эти события, кроме "Closing the program" - не нормальное завершение программы.

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




Пост N: 7252
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.06.22 16:59. Заголовок: Опять вылет в большо..


Опять вылет в большой проге у меня.
В Win10 работает нормально, а под WinServer 2012 - вылет.
      @  BUTTONEX Button_S1 ... ; 
......
ACTION {|cw,cn| cw := ThisWindow.Name, cn := This.Name ,;
SetProperty(cw,cn, "Enabled", .F.) ,;
ButtonSpavki(cn,aDim,1,cw) ,;
iif( _IsWindowActive(cw), Setproperty(cw,cn, "Enabled", .T.), Nil ) ,;
Form_Seek.Label_Buff.Setfocus } // Строка 918

Ошибка вот такая:
     Time from start: 0 days 0 hours 1 mins 36 secs 
Error MGERROR/0 Control: Label_Buff Of Form_Seek Not defined. Program terminated.
--------------------------------- Stack Trace ---------------------------------
Called from MSGMINIGUIERROR(0)
Called from VERIFYCONTROLDEFINED(0)
Called from DOMETHOD(0)
Called from (b)FORMA_FILTER(918) in module: Source\Tbrw_fFind.prg
Called from _DOCONTROLEVENTPROCEDURE(0)
Called from EVENTS(0)
Called from MYEVENTSHANDLER(1729) in module: Source\main.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(0)
Called from FORMA_FILTER(1167) in module: Source\Tbrw_fFind.prg
Called from MYFINDEDIT(729) in module: Source\Tbrw_fFind.prg
Called from (b)CREATEBROWSEFIND(560) in module: Source\Tbrw_fFind.prg
Called from TSBROWSE:KEYDOWN(0)
Called from TSBROWSE:HANDLEEVENT(0)
Called from EVENTS(0)

Окно Form_Seek теряется совсем после вызова другого MODAL окна ...

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




Пост N: 7670
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.06.22 23:11. Заголовок: Label_Buff Of Form_S..


Label_Buff Of Form_Seek Not defined
Делай проверку

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




Пост N: 4138
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.22 11:25. Заголовок: Andrey пишет Окно Fo..


Andrey пишет
 цитата:
Окно Form_Seek теряется совсем после вызова другого MODAL окна ...


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

Dima пишет
 цитата:
Делай проверку


Этого мало в большой программе, надо исп. события, т.к. например код
 
DEFINE WINDOW Form_Seek ;
...
ON INIT {|| myOnInitFSeek(nLineCol,cType,aDim), Form_Seek.Label_Buff.Setfocus }
...

не дает завершится процедуре ACTION WINDOW Form_Seek нормальным образом (блок ON INIT это часть ACTION WINDOW ... после него еще есть код для завершения и он работает). т.е. лучше
 
ON INIT {|| _wPost(10) }
...
(This.Object):Event(10, {|| myOnInitFSeek(nLineCol,cType,aDim), Form_Seek.Label_Buff.Setfocus } )
...
для кнопки аналогично
ACTION {|| _wPost(11, This.Index) }
...
(This.Object):Event(11, {|cw,cn| cw := ThisWindow.Name, cn := This.Name ,;
SetProperty(cw,cn, "Enabled", .F.) ,;
ButtonSpavki(cn,aDim,1,cw) ,;
iif( _IsWindowActive(cw), Setproperty(cw,cn, "Enabled", .T.), Nil ) ,;
Form_Seek.Label_Buff.Setfocus } )
...


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




Пост N: 7254
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.22 17:37. Заголовок: Поставил событие - _..


Поставил событие - _wPost(11, This.Index)
В Win10 нормально, а в WinServer 2012 - опять вылет.

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




Пост N: 7256
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.22 22:37. Заголовок: Вот так нужно делать..


Вот так нужно делать в больших системах.
       (This.Object):Event(11,  {|| 
Local cw := ThisWindow.Name
Local cn := This.Name
ButtonSpavki(cn,aDim,1,cw)
? " === ButtonSpavki(..)=", ProcNL()
? " === !", cw, _IsWindowActive(cw), _IsWindowDefined(cw), cn, _IsControlDefined(cn, cw)
SET WINDOW THIS TO cw
? " ThisWindow =", cw, ThisWindow.Name
? " This =", cn, This.Name
This.&(cn).Enabled := .T.
//IF _IsWindowActive(cw) .and. _IsControlDefined(cn, cw)
// ? " Enabled := .T."
// Setproperty(cw,cn, "Enabled", .T.)
//ENDIF
? " End=", ProcNL() ; ? " ..."
This.Label_Buff.SetFocus()
// DoMethod(cw, cn, "SetFocus")
SET WINDOW THIS TO
Return Nil
} )

END WINDOW

Спасибо БОЛЬШОЕ Сергей !!!

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




Пост N: 7257
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.07.22 18:36. Заголовок: Опять проблема в про..


Опять проблема в проге МиниГуи и Windows Server 2008 R2 6.1 SP1 - опять вылет, на том же самом сервере.
Причем интересно, одна и таже прога эксплуатируется на нескольких WinServer 2008 и 2012.
На 2012 проблемы нет, а на 2008 проблема есть. Причем используется процессоры Xeon.
На одном сервере эта проблема и есть (хотя сервер фирменный PROLIANT),
на другом такой же проц, только попроще - проблема тоже есть, подвисание, а потом вылет.
Прога на МиниГуи, большая (26Мб ехе-ник) открывает 3 окона MODAL, в последнем окне справочник улиц.
Если выбирать улицу стрелками, то прога не вешается, а если начинаем поиск по буквам, то первый выбор не вешается, а второй вешается прога. Окно нормально закрывается, НО возврат на второе окно MODAL не происходит, идёт вылет - пишет нет объекта на форме.
Окно на экране - а прога пишет нет такого окна ! Блин фигня какая то....
Что делать - непонятно...
Вот такие окна в проге:

Месяц назад исправил ошибку, работало нормально - не вылетало, а сейчас опять вылетает...
Можно и дальше убрать вылет окна, но это не решение !
ТЕРЯЕТСЯ ОКНО 2 после выбора из справочника в 3-окне.
Как это предотвратить ?

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




Пост N: 7279
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.01.23 14:00. Заголовок: Опять глюги в програ..


Опять глюги в программе у меня.
Вылет из программы и 2-3 окна "Программа уже запущена"


У меня нет нигде в коде такого сообщения.
Наверное берётся системное сообщение из МиниГуи.
Поискал и не нашёл....
Непонятно - КАКАЯ ПРОГРАММА уже запущена ?
1) Может стоит добавить строку в это окно, откуда уже запущена программа, в сам МиниГуи ?
Типа такого - ProcNL() + CRLF + ProcNL(1)

2) Вот мой код:
IF _IsWindowDefined("Form_Card") 
DoMethod("Form_Card", "SetFocus")
ELSE
aForm := HMG_GetForms() // все открытые окна
cTekForm := ThisWindow.Name // строка 54
aFormHide := {}
? "---> Start card:", cTekForm, ProcNL()
DO EVENTS ; hb_gcAll() ; DO EVENTS ; wApi_Sleep(50) // запустить "сборщик мусора"

FOR nI := 1 TO Len(aForm)
cForm := UPPER(aForm[nI])
? nI, cForm, _HMG_aFormType[nI], _HMG_aFormHandles[nI], _HMG_aFormDeleted[nI]
?? "Visible=", IsWindowVisible( GetFormHandle( cForm ) )
?? GetProperty( cForm, "Visible" )
IF cForm == UPPER(cTekForm) ; LOOP
ENDIF
lHide := .T.
IF AT("FORM_WIN", cForm) == 0
AADD(aFormHide, cForm )
ELSE
lHide := .F.
ENDIF
....
....
DEFINE WINDOW Form_Card ;
.....
END WINDOW

ACTIVATE WINDOW Form_Card

DO EVENTS ; hb_gcAll() ; DO EVENTS ; wApi_Sleep(50) // запустить "сборщик мусора"

FOR nI := 1 TO Len(aFormHide)
cForm := aFormHide[nI]
IF _IsWindowDefined(cForm) ; DoMethod(cForm, "Show")
ENDIF
NEXT

SwitchToWin( cTekForm ) // переключить на тек.форму

ENDIF // _IsWindowDefined("Form_Card")

Почему вылетает здесь на 54 строке ?

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




Пост N: 7309
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.02.23 17:22. Заголовок: Перешёл на новую вер..


Перешёл на новую версию - Harbour MiniGUI Extended Edition 23.02 (Update 1)
До этого было - Harbour MiniGUI Extended Edition 22.12 (Update 2)
Пересобрал свою большую прогу и установил только у ОДНОГО юзера...
И поехало в первый же день... Прога вываливатся там где всегда работала. Фигня получается...
Система WinServer 2008. Ошибки не постоянные, то вылетает то нет.

Например ошибка такая:


Вот код который работал:
FUNCTION MG_RetryCancel( cMsg, aButton, cTitle, cIcoRes, nIcoSize, bInit, aBClr) 
LOCAL nK, lRet := .F.
LOCAL aButColor := {COLOR_LIGHT_GREEN,COLOR_LIGHT_RED}
DEFAULT cIcoRes := "Help64", nIcoSize := 64 , bInit := NIL
DEFAULT aButton := {"&Продолжить","&Отмена"} , cTitle := "Внимание!"
DEFAULT aBClr := {198,217,240} // светло-синий-80%

SET MSGALERT FONTCOLOR TO BLACK
SET MSGALERT BACKCOLOR TO aBClr

_HMG_ModalDialogReturn := 2

//bInit := {|| _logfile(.t., This.Name, 'oDlg=',_IsWindowDefined('oDlg')), this.topmost := .t. ,;
// this.Btn_01.Fontcolor := BLACK ,;
// this.Btn_02.Fontcolor := BLACK }

bInit := {|| SetProperty("oDlg", "Topmost", .t. ) ,;
this.Btn_01.Fontcolor := BLACK ,;
this.Btn_02.Fontcolor := BLACK }

? ProcNameLine() + "--[тест]-----------------------", ThisWindow.Name

nK := HMG_Alert( cMsg, aButton, cTitle, NIL, cIcoRes, nIcoSize, aButColor , bInit ) // строка 264
IF nK == 1
lRet := .T.
ENDIF
_HMG_ModalDialogReturn := 1

RETURN lRet

Откатился назад, ошибка ушла.
Что делать ?

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

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