Página 4 de 5

Problema para compilar programa com Harbour 3.2

Enviado: 16 Set 2016 18:14
por JoséQuintas
Faça esses testes que eu fiz, pra tentar identificar em que parte que trava, se ao acessar o ODBC ou se depois, ao acessar o servidor.
Isso vai ajudar a identificar a partir de qual ponto começa o problema, e o que precisa de atenção.

Nota: a dica do include usando -u+dbinfo.ch foi do A.Simões em outro post. assim nem precisei alterar o fonte original.

Problema para compilar programa com Harbour 3.2

Enviado: 18 Set 2016 00:58
por cjp
Não sei se entendi completamente o que vc disse (sou meio leigo; às vezes o que parece básico para você pra mim é bastante complicado). Fiz vários testes. Mas aqui continua exatamente a mesma coisa.

Primeiro, vc tem razão: dando enter depois de travar, aparece o erro. Não sei se é assim só no 3.4, pois testei isso com minha versão do sistema compilada com o 3.2, que está travando bastante, mas não apareceu erro algum mesmo dando enter.

Não sei se entendi o que vc disse quanto a mudar para apenas "ODBC 3.51". Seria pra mudar na fonte de dados ou no teste2.prg?

Na dúvida, testei das duas formas, mas em ambas não funcionou.

O erro que aparece é na linha IF nConnection == 0: Error base/1071 Argument error: ==

Como havia te dito, testei o nConnection antes, está em branco, nem dá NIL, nem dá nenhum número de conexão, o que é estranho.

Aquele teste anterior que vc havia mandado, que funcionou aqui, é com outra forma de conexão? Não é com rddinfo? Será que funcionaria plenamente no meu sistema? Tem que mudar muita coisa?

Problema para compilar programa com Harbour 3.2

Enviado: 18 Set 2016 08:15
por JoséQuintas
Teria que mudar muita coisa, daquele jeito é sem usar nada do Harbour.

Aquilo do test.prg, é com tudo de errado que poderia acontecer.
Começa com tudo errado, e a cada teste uma coisa a mais fica correta.
Em todos os casos retornou um número, mesmo sendo zero ao falhar.
Não sei se isso é diferença do 3.2 ou se é parte do problema.

Teste novamente com 3.4.
Se aqui funciona e aí não, é algo na sua máquina.
Verifique PATH, LIB, OBJ, etc., e a pasta de compilação, porque pode estar misturando alguma coisa de outro Harbour/xharbour, ou até alguma coisa de BCC.

Usa Harbour puro ou esqueceu de mencionar alguma coisa como minigui que tem Harbour próprio?
?

Problema para compilar programa com Harbour 3.2

Enviado: 18 Set 2016 11:58
por JoséQuintas
O que eu faria:

O teste aqui funciona e aí não. Partindo disto, vamos eliminar o que é diferente:

Crie uma pasta: C:\LIXO
Dentro dela coloque o Harbour 3.4 que forneci, C:\LIXO\HARBOUR
Coloque este BAT na pasta c:\lixo\harbour\contrib\sddodbc\tests

Código: Selecionar todos

SET HB_COMPILER=msvc
SET HB_COMPILER_VER=1600
SET HB_INSTALL_PREFIX=c:\lixo\harbour
SET HB_LANG=EN
SET PATH=c:\lixo\harbour\bin;c:\lixo\harbour\comp\msvc2010\bin
SET INCLUDE=c:\lixo\harbour\comp\msvc2010\include
SET LIB=c:\lixo\harbour\comp\msvc2010\lib
hbmk2 test2 -u+dbinfo.ch -workdir=c:\lixo
test2
Execute o bat, o resultado tem que ser este:

Código: Selecionar todos

Could not connect to server          0 IM002 [Microsoft][ODBC Driver Manager] Nome da fonte de dados
 nπo encontrado e nenhum driver padrπo especificado
Se não for este o resultado, sua máquina está atrapalhando, precisará análise.

Se o resultado for esse, é ir alterando igual mostrei num post anterior, um teste de cada vez, sem pressa.
Use o bloco de notas se for necessário, também não sei se usa uma IDE que requer configuração extra.

Código: Selecionar todos

c:\windows\notepad.exe teste2.prg
Nem precisa fechar a janela do fonte. Deixe o bloco de notas aberto e use a opção de arquivo-salvar.
Assim vai fazer uma alteração de cada vez, sem precisar ficar reabrindo o fonte.

O bat digitei aqui durante o post, à primeira vista está ok, mas também vai ser considerado teste.
Tudo vai depender das mensagens que aparecerem na tela.

Problema para compilar programa com Harbour 3.2

Enviado: 18 Set 2016 16:35
por JoséQuintas
Lembrei de uma coisa:
Tem recurso que existe numa ODBC e em outra não.
Teste usar a mesma ODBC do exemplo, a 5.1.

Não custa nada tentar.
Não tem problema instalar 3.51 e 5.1 ao mesmo tempo, uma é independente da outra.

Problema para compilar programa com Harbour 3.2

Enviado: 19 Set 2016 01:12
por cjp
Fiz todos os testes, um a um, deu tudo certo, exatamente como vc disse.

Isso significa que o problema está no meu sistema?

Problema para compilar programa com Harbour 3.2

Enviado: 19 Set 2016 09:24
por JoséQuintas
Disse que agora funcionou e antes não.
Se funcionou zerando as configurações, então pode ter alguma configuração interferindo.
Verifique isso, isso pode causar pegar arquivo errado.

Verifica se não incluiu TRY/CATCH e acabou impedindo/escondendo as mensagens de erro no aplicativo.
Ou alguma errorsys particular, que cause o mesmo efeito.

Verifica o que esse teste usa, e se o seu aplicativo tem a mesma coisa.

A única coisa a mais suspeita é usar compatibilidade xHarbour.
Fazer que o Harbour funcione diferente, pode significar resultado diferente.
xhb.hbc e hbcompat.ch
Apenas é suspeito, não sei se causa algum problema.

Se for o caso, tente isolar alguns fontes do aplicativo, e vá testando uma parte de cada vez.
Teste com poucos módulos, e vá acrescentando os outros módulos até completar todos.

No momento pode ser qualquer coisa.
Até mesmo alguma função que acabou criando com mesmo nome, ou existe com mesmo nome em bibliotecas diferentes.

Olhei novamente seu HBP:

Código: Selecionar todos

# coloque aqui suas libs, precedidas pela letra "l" (minúscula):
-lxhb
-lhbwin
-lhbtip
-lhbct
-lhbHPdf
-lhbZebra
-lhbmisc
-llibmysql
rddsql.hbc 
sddodbc.hbc
hbwin.hbc
Melhor ainda, já que está com o Harbour 3.4, deixe só:

Código: Selecionar todos

rddsql.hbc
sddodbc.hbc
hbzebra.hbc
hbhpdf.hbc
hbwin.hbc
hbtip.hbc
O próprio Harbour vai te avisar se precisa acrescentar as outras.

Problema para compilar programa com Harbour 3.2

Enviado: 19 Set 2016 10:05
por Jairo Maia
Olá Pessoal,
JoséQuintas escreveu:Ou alguma errorsys particular, que cause o mesmo efeito.
Errorsys customizado ele tem sim. Talvez pra saber exatamente qual é o erro, melhor compilar removendo o errorsys modificado, assim será assumido o errorsys padrão e as vezes o problema pode ser acusado em outra parte.

Problema para compilar programa com Harbour 3.2

Enviado: 20 Set 2016 18:17
por cjp
Tenho errorsys próprio sim. Mas ele tem poucas modificações em relação ao do HB, e indica o erro também. Posso removê-lo, mas acho que não é necessário, pois estou vendo onde está o problema.

Retirei as libs recomendadas, exceto -lxhb e -lhbct, pois sem estas não compila, pois tenho muitas funções usando essa lib. Compilei o programa inteiro nesta pasta própria, com as configurações que vc postou e que funcionaram no teste, mas está dando o mesmo erro de conexão.

Ainda vou fazer os demais testes sugeridos, não tive tempo ainda. Estou postando esta resposta parcial apenas para vc acompanhar o andamento.

Problema para compilar programa com Harbour 3.2

Enviado: 22 Set 2016 17:22
por cjp
Retomei os testes. Fiz um prg super simples assim:

Código: Selecionar todos

         #define RDDI_CONNECT     1001
         #define RDDI_DISCONNECT   1002
         #define RDDI_EXECUTE     1003
         REQUEST SQLMIX, SDDODBC, DBFNTX
         ANNOUNCE RDDSYS


PROCEDURE Main
		 local sprov :="xxx"
         RDDSETDEFAULT("DBFNTX")
         nCon := RDDINFO( 1001, { "ODBC", "Server=jupiter.br-rgt.net;Driver={MySQL ODBC 3.51 Driver};dsn=;User=inacioca_inacio;pwd="+sprov+";database=inacioca_inacio;" } )
?"Conferir nCon:"		 
?nCon
inkey(11)		 
return
Está exatamente assim, exceto quanto à senha: no prg está a senha correta.

Fiz o seguinte .bat para compilar:

Código: Selecionar todos

SET HB_COMPILER=msvc
SET HB_COMPILER_VER=1600
SET HB_INSTALL_PREFIX=c:\lixo\harbour
SET HB_LANG=EN
SET PATH=c:\lixo\harbour\bin;c:\lixo\harbour\comp\msvc2010\bin
SET INCLUDE=c:\lixo\harbour\comp\msvc2010\include
SET LIB=c:\lixo\harbour\comp\msvc2010\lib
hbmk2 tag2.hbp
E o arquivo tag2.hbp está assim:

Código: Selecionar todos

# coloque aqui suas libs, precedidas pela letra "l" (minúscula):
rddsql.hbc
sddodbc.hbc
	 
# coloque aqui os parâmetros de compilação:
-quiet
-jobs=4
-oTAGENDA

# coloque aqui seus arquivos PRGs:
TAGENDA.PRG
Está compilando normalmente, mas na execução, está dando o mesmo erro: nCon em branco.

O que pode estar errado nisso?

Problema para compilar programa com Harbour 3.2

Enviado: 22 Set 2016 18:25
por JoséQuintas
A única coisa não pensada antes:

Código: Selecionar todos

#include "dbinfo.ch"
? RDDI_CONNECT
61

Não defina errado, use #include

Código: Selecionar todos

#include "dbinfo.ch"
REQUEST SQLMIX, SDDODBC, DBFNTX
ANNOUNCE RDDSYS

PROCEDURE Main
   local sprov :="xxx"
    RDDSETDEFAULT("DBFNTX")
    nCon := RDDINFO( RDDI_CONNECT, { "ODBC", "Server=jupiter.br-rgt.net;Driver={MySQL ODBC 3.51 Driver};dsn=;User=inacioca_inacio;pwd="+sprov+";database=inacioca_inacio;" } )
?"Conferir nCon:"   
?nCon
inkey(11)   
return

Talvez tenha sido alterado depois, mas não é 1001.

Problema para compilar programa com Harbour 3.2

Enviado: 22 Set 2016 19:12
por JoséQuintas
Aproveitando o fato:

Talvez tenham decidido mexer nas numerações.
Pode ser que numa versão de Harbour seja um número e em outra versão outro número.

Por isso é importantíssimo não misturar arquivos de versões de Harbour diferentes.
E também usar o que é recomendado, #include por exemplo

Isso pode explicar muitos problemas que muitos já tiveram.

E.... querendo ou não, esse fonte estava diferente do exemplo.... rs
No exemplo não define nada.... rs

E também aproveitando... um programinha simples, isolado do aplicativo ajudou a resolver, o que no fonte do aplicativo seria complicado....
É mais outra das recomendações ao relatar um problema.

Estou apenas aproveitando o fato como um exemplo prático pra isso tudo.
É que a gente sempre tem exemplos do que pode dar certo, e faltam exemplos do que pode dar errado, ou do porque certas coisas.... rs

Problema para compilar programa com Harbour 3.2

Enviado: 23 Set 2016 00:46
por cjp
Testei com 61, também não funcionou.

Não sei se te entendi bem quanto ao include, mas testei assim:

Código: Selecionar todos

         #include RDDI_CONNECT     61
Dá erro na compilação.

Eu só copiei o que o tutorial do Toledo. Se estiver errado, desculpe, mas não entendo muito isso.

Na verdade, acho que esse define é desnecessário, já que na linha nCon := RDDINFO( 61, { "ODBC",... não estou usando RDDI_CONNECT, mas o próprio número 1001 ou 61.

Mais um detalhe: está acontecendo travamento na compilação também nesta versão do Harbour. Isso é um mal sinal, né? Onde mais poderia estar o problema?

Problema para compilar programa com Harbour 3.2

Enviado: 23 Set 2016 05:03
por JoséQuintas
Na dúvida, o que usei no teste, porque fui alterando e testando:

Código: Selecionar todos

#require "rddsql"
#require "sddodbc"

#include "dbinfo.ch"

REQUEST SQLMIX, SDDODBC, DBFNTX

PROCEDURE Main
   local sprov :="xxx", nCon
    RDDSETDEFAULT("SQLMIX")
    nCon := RDDINFO( RDDI_CONNECT, { "ODBC", "Server=serverjpa;Driver={MySQL ODBC 3.51 Driver};User=xxx;pwd="+sprov+";database=xxx;" } )
?"Conferir nCon:"
?nCon
? RDDI_CONNECT
inkey(11)
return

Código: Selecionar todos

d:\temp>hbmk2 test sddodbc.hbc rddsql.hbc
hbmk2: Processing environment options: -comp=msvc
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test.prg'...
Lines 428, Functions/Procedures 1
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_87ne4m.dir\test.c'... Done.
test.c

d:\temp>test

Conferir nCon:
         1
        61

Problema para compilar programa com Harbour 3.2

Enviado: 24 Set 2016 01:09
por cjp
De fato, assim funcionou.

Tentei reproduzir isto no meu sistema, mas continua não funcionando. Preciso fazer mais testes.

Aproveitando: vc sabe qual a função que substituiu a hb_sendmail()?

A propósito: quem sou eu para falar isso, mas acho que os desenvolvedores do Harbour deveriam ter mais cuidado para manter a compatibilidade entre as versões. Ao lançarem uma versão nova, seria bom manter as funções das versões anteriores, de modo a evitar ter que mudar tanto um sistema de uma versão para a outra.