Erros padrão do Harbour

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

O controle de erros da HMG é pior que péssimo, deveria ser eliminado da face da terra.
Como faço para acabar com ele, e usar somente o padrão do Harbour?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Quem já teve erros inexplicáveis na HMG, sem qualquer tipo de mensagem que se manifeste.

Senão nunca vão corrigir isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

O modo mais rápido que eu conheço pra demonstrar como a rotina de erros da HMG é ruim, é com multithread.

Código: Selecionar todos

FUNCTION Main

   SetMode( 25, 80 )
   CLS
   hb_ThreadStart( { || HmgMain() } )
   hb_ThreadStart( { || HmgMain() } )
   ? "Ola"
   Inkey(0)

   RETURN

#include "hmg.ch"

Function HMGMain

	DEFINE WINDOW Win_1 ;
		ROW 0 ;
		COL 0 ;
		WIDTH 400 ;
		HEIGHT 400 ;
		TITLE 'Hello World!' ;
		WINDOWTYPE MAIN

	END WINDOW

	Win_1.Center

	Win_1.Activate

Return
errohmg.png
E aí?
Deu erro aonde?
Em qual linha?
Em qual fonte?
A mensagem de erro está linda, mas não serve pra nada.

Já ao fabricar um erro... lá vém ele em html....
Lá vém os problemas de navegador, plugins, programas de proteção de banco, etc.
O que tem de errado em abrir no bloco de notas, simples, leve e sem interferência?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Trocando pra errorsys do José Quintas.
Olhem que coisa curiosa.
errohmg.png
Mas esse erro nem aparecia antes, o que será que houve?

A HMG ia mostrar o erro, mas pra mostrar o erro a HMG precisa funcionar.
Deu erro na rotina que mostra erro, foi isso.... Nem HMG, nem erro, nem nada.... rs

Nota: tem duas vezes, porque na primeira esqueci do print-screen, então vai acumulando no log.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Acrescentei um erro proposital na outra thread.
erro2.png

Uia.
Rotina de erros a prova de multithread, a prova de HMG, OOHG, GTWVG, console, qualquer coisa, funciona sempre.

O que ela tem a mais?
Nada, só salva em disco, não depende nem do Harbour pra mostrar, basta o bloco de notas.

Na verdade tem um algo mais simples:

Código: Selecionar todos

FUNCTON WriteErrorLog( cTexto, nNivel )
Isso é pra chamar de outros pontos do aplicativo, por exemplo erros em comandos SQL.
O nível significa o nível de detalhe, no nível 2 acrescenta toda callstack.

Podem olhar, não tem nada demais na errorsys.
Na GTWVG, por ser janela Windows, acabou sendo obrigatório que eu criasse algo assim.

https://github.com/JoseQuintas/AllGui/b ... RORSYS.prg
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

E se quiser mandar por email?

Minha Main() do aplicativo é algo parecido com isto:

Código: Selecionar todos

FUNCTION Main()

   IF File( "hb_out.log" )
      EnviaPorEmail()
   ENDIF
Deu erro, não precisa nem ter internet nem nada, o erro fica salvo.
Ao carregar o aplicativo, ele vê se tem log de erro e vai pra rotina de envio.
Lá tem teste de internet, etc. nem precisa ser a mesma máquina pra enviar o erro por email.

Deu erro, é o erro que interessa, e nada mais.
Qualquer coisa extra fica fora da rotina de erros.

O usuário pode até mandar por email, foto por whatsapp, etc, caso o aplicativo não consiga.
Atende qualquer que seja a situação.



Concluindo:
A rotina de erros da HMG é ruim? SIM, no caso que mostrei, ela nem sequer conseguiu funcionar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Agora HMGExtended....

Só tenho uma coisa a dizer:
Se coloquei minha errorsys no lugar da original, e o log de erro confirma isso, porque merd... está mostrando mensagem de erro no estilo da HMG Extended?
Muito esquisito....
agorahmg.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Essa coisa de mensagens de erro é tão feia na HMG Extended, que vira epidemia ....rs
Até exemplos de errorsys, pra bagunçar ainda mais...

\samples\basic\hmg_error
\samples\basic\myerrorfunc
\source\winreport\fncmyerror

Até agora não achei aonde pode estar aquela mensagem de erro..'.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

É sério, quem puder ajudar, é HMG Extended.
Quero encontrar aonde está mostrando essa mensagem de erro.
Não é por falta de pesquisa, talvez seja por falta de saber o que pesquisar.
errorsys.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Erros padrão do Harbour

Mensagem por Daniel »

apareceu nestes arquivos
erro.png
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Nunca gostei tanto de uma resposta que não tinha nada a ver com a pergunta, como esta.

Após a sua informação....

Pela primeira vez....

HMG Extended Multithread.... 5 HMG Extended, uma em cada thread.
hmgsmulti.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Erros padrão do Harbour

Mensagem por Claudio Soto »

JoséQuintas escreveu:
errohmg.png
E aí?
Deu erro aonde?
Em qual linha?
Em qual fonte?
A mensagem de erro está linda, mas não serve pra nada.

Já ao fabricar um erro... lá vém ele em html....
Lá vém os problemas de navegador, plugins, programas de proteção de banco, etc.
O que tem de errado em abrir no bloco de notas, simples, leve e sem interferência?
José, una cosa es el ErrorBlock() de HB que procesa solo los errores de HB captados por la MV y otra cosa es la función MsgHMGError() de HMG que procesa los errores de runtime que capta HMG ya sea a nivel prg (ej. un parámetro invalido) o a nivel del API (ej. retorno de un handle invalido). En un lenguaje de bajo como C los errores de runtime excepto algunos errores críticos no generan un mensaje de error como en los lenguaje de alto nivel como HB, Pascal, etc., simplemente setean una variable de error con el número de error y la función devuelve un valor indefinido ( basura) o un valor que indica que la función fallo (o el programa se trava si es un error más serio como por ejemplo el uso de un puntero invalido), es responsabilidad del programador y no del lenguaje chequear el éxito o el fracaso de una operación. A nivel del API ( excepto algun error crítico que la MV pueda captarlo como por ej. una violación de memoria ) si la lib gráfica no los procesa ErrorBlock() de HB nunca se ejecuta porque HB nunca se entera de ello, por eso no se pueden tratar todos los errores solo con el ErrorSys de HB. Existen msg de error como el que muestra tu imagen que en la práctica diaria del programador no importa demasiado donde ocurrió porque son fallas típicas del llamado a una función del API y un programador familiarizado con Windows va a saber que ese tipo de error se produce al crear una ventana y la falla se debió a un registro de la clase, este error normalmente ocurre porque se le pasó algún puntero invalido o la clase ya está defina ( no se pueden duplicar nombres de clases), ese tipo de error si es de la lib es más relevante para el desarrollador que para el programador.
En tu ej. ese error se produce porque dos thread intentan registrar la mima clase, en realidad un thread ya la registro y el segundo thread que se ejecuta falla, en HMG las clases llevan el nombre de la definición de la ventana, en este caso se intenta registrar dos clases con el nombre _Win_1.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

O erro foi ao acessar a variável pública.
A rotina de erros da HMG não conseguiu mostrar isso.

Quanto a mostrar erros, se é possível mostrar, que seja mostrado.

Mas nesse caso iria entrar em loop infinito, porque também deu erro na rotina de erros.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Complemento:

Está considerando que erro de classe já registrada não interessa ao usuário.
Mas Interessa pra ele saber o que gerou isso.
Pode ter sido algo no fonte do usuário.
Querendo ou não, é fonte Harbour, mesmo que tenha partes em C.
Se começar a escolher quais mensagens devem aparecer para o usuário, pode tornar o uso da HMG num inferno.
Existen msg de error como el que muestra tu imagen que en la práctica diaria del programador no importa demasiado donde ocurrió porque son fallas típicas del llamado a una función del API y un programador familiarizado con Windows va a saber que ese tipo de error se produce al crear una ventana
ERRADO!
Se a HMG deu erro ao criar janela, sim, qualquer programador sabe que tem a ver com criar janela, nem precisa ser programador de API.
Mas qual das milhares de janelas dentro dos fontes?
E se isso acontece no cliente em determinada situação, como o usuário do aplicativo vai explicar o ponto exato aonde isso ocorre?

Mensagens de erro, e callstack existem por um motivo: ajudam a resolver problemas, que nem sempre tem a ver com a rotina aonde aconteceu o problema.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erros padrão do Harbour

Mensagem por JoséQuintas »

Além disso, nem sempre vão usar HMG do jeito que o desenvolvedor achou que deveria ser.

Veja que lindo isto, 4 janelas Main:

Código: Selecionar todos

PROCEDURE Main
   hb_ThreadStart( { || HMGMain() } )
   hb_ThreadStart( { || HMGMain() } )
   hb_ThreadStart( { || HMGMain() } )
   hb_ThreadStart( { || HMGMain() } )
   hb_ThreadWaitForAll()
   RETURN

Function HMGMain
   Init()
	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 480 ;
		TITLE 'MiniGUI ToolBar Demo' ;
		ICON 'DEMO.ICO' ;
		MAIN ;
		FONT 'Arial' SIZE 10
hmgmulti.png
demo.zip
Poderia me ajudar a encontrar aonde fecha a janela Main() ?
No momento as 4 janelas fecham tudo, já que todas são Main.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder