Erro inexplicável voltou

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

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

Erro inexplicável voltou

Mensagem por JoséQuintas »

Error BASE/44 Assigned value is wrong class: ...
Called from (b)...
(1) = Tipo: N Valor: 0
Sei lá....
Acho que vou ter que criar uma callstack pra API do Windows.
Deve ser alguma mensagem da API windows sem tratamento adequado.
Mas se o erro poderia ser até nisso.... complica....
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/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Erro inexplicável voltou

Mensagem por Fernando queiroz »

Quintas tive muitos erros assim quando tinha mistura de bibliotecas gráficas.
despois que passei a usar somente a HWGUI não tive mais
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro inexplicável voltou

Mensagem por JoséQuintas »

Eu não misturo, mas uso a parte que criei.

API Windows entra num jogo de empurra-empurra entre Windows e aplicativo pra encontrar solução.
O aplicativo precisa dizer se é pra parar ou pra continuar o empurra-empurra.
Deve ter alguma mensagem com erro nisso.

Na outra época encontrei algumas com retorno errado.
Não basta fazer o que precisa, precisa avisar o windows que já fez, ou que é pra desprezar.
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
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Erro inexplicável voltou

Mensagem por clodoaldomonteiro »

Bom dia, Quintas.

Você está usando uma .LIB para o TBrowse() ou está anexando os fontes .PRG dele no seu projeto, pois se caso a segunda opção, teria como vc ir depurando o que está acontecendo com o uso dele.
Aqui tive um problema com o Browse(), que era causado por uma torina que tinha para armazenar a string do Filtro, que em algum momento extrapolava e retornava truncada, mas tive que nos fontes do TBrowse() ir registrando tudo em arquivo, para q eu pudesse analisar.

Outra coisa que percebi, são as diferenças da Classe Tbrowse() mas as diversas versões do xHarbour e Harbour e nos fontes que tenho, não entrei nada referente a ":CSepColor".
Abraços.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro inexplicável voltou

Mensagem por JoséQuintas »

No caso de erro em API Windows, a mensagem de erro não é importante.
Postar a mensagem sempre causa confusão.
O Windows FECHA PARTE DO APLICATIVO sem que o harbour possa prosseguir corretamente.

A única parte visível é a final, onde o retorno é ZERO.
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
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Erro inexplicável voltou

Mensagem por clodoaldomonteiro »

Vi aqui: https://github.com/harbour/core/pull/185/files , que cSepColor deve ser uma string (Caracter) e o valor que a mensagem retorna diz que foi passado um inteiro de valor "0".
Mas depende muito da ver do Harbour/xHarbour.

Código: Selecionar todos

//Fonte extraído de: https://github.com/harbour/core/pull/185/files
   VAR    cSepColor  AS CHARACTER               // heading/column/footer separator color
   METHOD nTop( nTop ) SETGET                   // get/set top row number for the TBrowse display
   METHOD nLeft( nLeft ) SETGET                 // get/set leftmost column for the TBrowse display
   METHOD nBottom( nBottom ) SETGET             // get/set bottom row number for the TBrowse display
Daí é ver como está seus fontes, e ver se essa variável recebeu um valor Integer, acho eu.

Abraços.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro inexplicável voltou

Mensagem por JoséQuintas »

clodoaldomonteiro escreveu:Daí é ver como está seus fontes, e ver se essa variável recebeu um valor Integer, acho eu.
Apenas pra complementar, mas já falamos por zap:
Minhas funções de cores são fixas.
Elas SEMPRE retornam STRING, sem tratamento, sem pesquisar, sem IF, aconteça o que acontecer, é sempre a MESMA STRING FIXA NO FONTE.
Por exemplo, se fosse azul, FUNCTION CorAzul(),; RETURN "W/B".
Não tem como isso retornar ZERO, é só mesmo quando acontece esse bug inexplicável.

Certa vez eu vi uma mensagem do windows sobre limite de recursos excedidos.
Por isso relaciono o problema a algum problema no uso de API Windows.

ACHO, não tenho certeza, que API Windows trabalha estilo recursividade, chamadas a si mesmo.
Então, ACHO que uma ou mais ficaram infinitas por falta de tratamento.

E isso usa multithread, o Windows não espera que uma termine antes de chamar outra.
Então, apesar do programa continuar funcionando, essa outra rotina sem fim continua.
E quando estoura o limite, é quando o programa "endoida".
A mensagem de erro é nesse "endoidamento", mas não é esse o erro.

Vamos comparar com CDX corrompido.
A mensagem de CDX corrompido aparece numa determinada parte do fonte.
Isso não significa que aconteceu nessa parte do fonte, aconteceu antes, mas só foi dar erro depois.

Com o erro inexplicável acontece o mesmo.
Só que ao contrário do CDX, não é detectado, e é justamente com toda tabela interna do harbour.

"Talvez" um aplicativo normal se feche, e com multithread continue.
Nesse caso multithread não é o problema, ao contrário, apenas acabou deixando ver que o problema aconteceu.

Simular um erro desse tipo é até relativamente fácil.

Código: Selecionar todos

PROCEDURE Main
LOCAL a := 10
CLS
hb_ThreadStart( { || Show(a) } )
Inkey(1)
RETURN

PROCEDURE Show(a)

hb_gtReload( "WVG" )
CLS
Inkey(2)
? a + 10
RETURN
Isso vai dar erro.
O harbour vai encerrar e destruiir a variável A, mas mesmo assim Show() ainda vai ser executado e vai tentar usar a.
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