Rotina de ErrorLog

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

Rotina de ErrorLog

Mensagem por JoséQuintas »

Não lembro aonde vi algo sobre xharbour....

Já que está com problemas, o negócio seria aproveitar e usar uma versão do Harbour atual.

Afinal, que versão está usando?
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Rotina de ErrorLog

Mensagem por cjp »

Uso a 3.2. Tentei mudar para a 3.4, mas não funcionou.

De onde posso baixar a versão mais atual?

Sim, fui eu que falei errado em xHarbour.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina de ErrorLog

Mensagem por JoséQuintas »

Podemos definir o mundo Harbour como sendo 3 versões:

- Harbour 3.2
- Harbour 3.4
- xHarbour

Usa mingw?
Se usar mingw mais fácil, só baixar e usar.
Correção: depende se usa algum extra, e é possivel que o MySql seja um extra.

Nesta página: https://sourceforge.net/projects/harbou ... s/nightly/

Detalhe:
Depende do quão antiga é sua versão, ou se misturou alguma coisa. Faz um bom tempo que o Harbour 3.2 funciona perfeito.
Não uso nenhum extra, então não vou saber dizer como criar os extras.

Quando usa extras, não sei se o MySQL é um deles, é necessário:

- Baixar o componente adicional, que contém a DLL e arquivos #include pra C (.H)
- Gerar uma LIB pra acesso a essa DLL e/ou o componente extra direcionado pra exatamente essa DLL

É por isso que trocar de Harbour pode ser complicado: tem que lembrar o que adicionou de extra, e adicionar novamente, compatível com o novo.
Se obteve de alguém... tente obter desse alguém de novo, caso não consiga resolver.

E se quebrar a cabeça pra resolver, já anote o que fez, pra da próxima vez ser mais fácil.

Como eu não uso extras, apenas baixo os fontes do Harbour e gero. (Harbour 3.4).
Pra isso so precisa o compilador C e nada mais.
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Rotina de ErrorLog

Mensagem por cjp »

Não uso Minigui.

No link que vc passou tem 3 arquivos, correto? Um txt, um .exe, que parece que é o da minigui, e um .zip, que parece que é o harbour 3.2, correto?

Baixei este último, salvei em uma pasta diferente da que eu estava usando, e compilei com ele, sem a minha errorsys, e continua o mesmo problema: fecha direto, sem entrar na errorsys do Harbour.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina de ErrorLog

Mensagem por JoséQuintas »

No Harbour 3.2 é obrigatório configurar:

SET HB_INSTALL_PREFIX=pasta do harbour

Fez isso?

Lembrando que em SET PATH é pra deixar o Harbour que instalou agora, e retirar os outros.

Depois disso, só restam seus fontes mesmo.... rs
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

Rotina de ErrorLog

Mensagem por JoséQuintas »

Não sei se dá certo, colocar todo seu aplicativo dentro de uma errorsys, pra descobrir aonde sai.

Código: Selecionar todos

BEGIN SEQUENCE
   SuaMain()
RECOVER
   WriteErrorLog() // A CallStack
END SEQUENCE
A intenção seria gravar em que ponto saiu.
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Rotina de ErrorLog

Mensagem por cjp »

Não fiz não. Desculpe a ignorância, mas onde configura esses SETs?

Tentei colocar a main() dentro de um begin sequence, mas não compila.

De qualquer forma, acho que não funcionaria. Afinal, como vc mesmo disse, a begin sequence desvia da errorsys, correto? Então, ele vai apontar onde está o erro que estou provocando. Mas a questão não é essa. O problema é que não está entrando na errorsys e fechando direto. Quando desvio com o begin sequence, dá tudo certo.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina de ErrorLog

Mensagem por JoséQuintas »

Não é simplesmente colocar a Main em begin sequence.

Seria algo como:

Código: Selecionar todos

FUNCTION Main()

   BEGIN SEQUENCE
      SuaAntigaMain()
      BREAK
   RECOVER
      MostrarCallStack()
   END SEQUENCE
   MostrarCallStack()
...
mingw não é minigui. mingw é o compilador C padrão.

No windows:

Código: Selecionar todos

SET PATH=????
SET HB_INSTALL_PREFIX=?????
Quando desvio com o begin sequence, dá tudo certo.
Por acaso está retornando direito a errorsys anterior no final?
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Rotina de ErrorLog

Mensagem por cjp »

Realmente foi burrice minha.

Mas agora fiz assim:

Código: Selecionar todos

#require "rddsql"
#require "sddodbc"
#include "dbinfo.ch"
	 
//	REQUEST SQLMIX, SDDODBC, DBFNTX
#include "inkey.ch"
#include "hbgtinfo.ch"
//         #include "dbinfo.ch"
         #define RDDI_CONNECT     1001
         #define RDDI_DISCONNECT   1002
         #define RDDI_EXECUTE     1003
         REQUEST SQLMIX, SDDODBC, DBFNTX
         ANNOUNCE RDDSYS

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

PROCEDURE Main
          bError := ErrorBlock( {|e| Break(e) } )
          begin sequence
                agenda()
          recover using e
                  cMessage := ErrorMessage(e)
                  logerro()
                  mandmail1("error.log","Erro na função agenda contornado com o recover do begin sequence")
          endsequence
          ErrorBlock( bError )
return

function agenda
...
Assim imagino que era pra funcionar, mas estranhamente, está fechando direto.

Desculpe, mas esta parte eu ainda não entendi:
No windows:
SET PATH=????
SET HB_INSTALL_PREFIX=?????
Sempre retorno assim, veja se está certo:

Código: Selecionar todos

          endsequence
          ErrorBlock( bError )
Tá certo?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina de ErrorLog

Mensagem por JoséQuintas »

O Harbour 3.2 tem um bug, ele usa o SET HB_INSTALL_PREFIX também na compilação, e deveria ser somente na geração.

De nada adianta configurar o PATH, se não ajustar também SET_HB_INSTALL_PREFIX, variável de ambiente do Windows.

O que acontece com sua função quando dá erro no fonte dela, ou não consegue enviar email?
Sai do sistema?

Olhou a hb_out.log?
Isso é log de erros do HARBOUR, não da errorsys.
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Rotina de ErrorLog

Mensagem por cjp »

O que eu não entendi foi como fazer isso na prática? Seria colocar no .hbp? No .bat?

O programa fecha direto, não dá qualquer erro. Não cria o log de erro, não tem arquivo hb_out.log.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina de ErrorLog

Mensagem por JoséQuintas »

O que eu não entendi foi como fazer isso na prática? Seria colocar no .hbp? No .bat?
não ajustar também SET_HB_INSTALL_PREFIX, variável de ambiente do Windows.
Se é no Windows, não pode ser no HBP. Ou no BAT ou no Windows.

Acabei de passar por um problema parecido, mas pelo menos aparecia na tela.
É essa merd. de mania dessas bost. de GUIs inventarem errorsys, ou modificarem até o comportamento padrão do Harbour.
Foi com HWGUI.

Resolvi de forma radical:
Já que essas bost. modificam a apresentação em tela do Harbour, removi qualquer uso de tela da errorsys.
Agora é somente o bloco de notas e nada mais.

Código: Selecionar todos

   //DO WHILE ( nChoice == 0 )
   //   IF ( Empty(e:osCode) )
   //      nChoice := Alert( cMessage, aOptions )
   //   ELSE
   //      nChoice := Alert( cMessage + ";(DOS Error " + Ltrim( Str( e:OsCode ) ) + ")", aOptions )
   //   ENDIF
   //   IF ( nChoice == NIL )
   //      EXIT
   //   ENDIF
   //ENDDO
   //
   //IF ! Empty( nChoice )
   //   // do as instructed
   //   IF ( aOptions[ nChoice ] == "Break" )
   //      Break(e)
   //   ELSEIF ( aOptions[ nChoice ] == "Retry" )
   //      RETURN (.T.)
   //   ELSEIF ( aOptions[ nChoice ] == "Default" )
   //      RETURN (.F.)
   //   ENDIF
   //ENDIF

Called from (b)ERRORSYS(17)
Called from TESTHWGUI(37)
Called from (b)MAIN(8)

Error BASE/1003 Variable does not exist: CODIGO
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Rotina de ErrorLog

Mensagem por cjp »

Eu realmente não sei mais o que fazer para resolver isso. Acho que vou ter que desistir.

Por favor, só me responda mais uma coisa, que eu já tinha perguntado acima: como vc faz a atualização do sistema no computador dos teus usuários? Como envia o arquivo de atualização? Manda compactado? Manda o próprio EXE?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina de ErrorLog

Mensagem por JoséQuintas »

Já respondi antes.
Minha atualizacão é simples: baixo o EXE com um nome temporário, testo tamanho/crc32, se tudo ok, renomeio pra EXE pra entrar no lugar do outro.
É assim desde os tempos do Clipper.
Quanto à errorsys....
Se retirou as mexidas da errorsys, não usa nenhuma lib gráfica....
Se tem certeza que ajustou TODOS os fontes envolvidos, de todas as pastas (pode ser que estão separados e só olhou uma pasta)...
De diferente só resta esse uso de MySQL, mas muita gente usa assim, então tente se informar porque senão a mudança vai ser radical nos fontes pra mudar 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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Rotina de ErrorLog

Mensagem por cjp »

O que ainda não entendi é como vc baixa? Por ftp? Se não, de onde baixa? Como faz para baixar?

E como vc consegue renomear o EXE com o programa em execução?

Quanto à errorsys, já testei com a errorsys do Harbour. Não uso nenhuma lib gráfica. Não sei mais o que fazer. O que mais me intriga é esse erro método não exportado: SEVERITY, que, até onde sei, é problema do Harbour, não é da minha aplicação.
Inacio de Carvalho Neto
Responder