Clipper On Line • Ver Tópico - Erros padrão do Harbour

Erros padrão do Harbour

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 09:36

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 10:31

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 13:23

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 13:51

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 14:07

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:

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/blob/master/common/ERRORSYS.prg
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 14:13

E se quiser mandar por email?

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 16:22

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 18:50

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 19:01

É 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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor Daniel » 24 Fev 2017 21:57

apareceu nestes arquivos

erro.png
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar de usuário

Daniel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 13 Ago 2003 22:42
Cidade/Estado: Apucarana - PR
Curtiu: 0 vez
Mens.Curtidas: 36 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 24 Fev 2017 23:23

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor Claudio Soto » 24 Fev 2017 23:32

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 de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 25 Fev 2017 09:01

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 25 Fev 2017 10:09

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erros padrão do Harbour

Mensagempor JoséQuintas » 25 Fev 2017 10:22

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:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro