Problema para compilar programa com Harbour 3.2

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

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Problema para compilar programa com Harbour 3.2

Mensagem por Itamar M. Lins Jr. »

Ola!
...alguém antes já tinha me dito que essa versão não é boa.
Precisa trazer mais informações, para sabermos melhor porque não é boa.
Somos todos programadores, mais informações nestas afirmativas são sempre bem vindas!
Eu uso a 3.4 desde o inicio dela e sempre fiz propagada positiva. Assim como o Letodb, Hwgui, Mingw...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

O Harbour 3.2 vém com mingw
O Harbour 3.4 vinha com mingw, mas agora o download é separado.

Se tinha uma pasta BCC, então seu Harbour não era do oficial, a não ser que fosse 3.0 (não lembro se vém junto)
Usar compilador BCC ou MSVC, significa ter que gerar TODO Harbour do zero, pra ter as LIBs adequadas.
Facilitar um pouco, já que no momento funcionar é o mais importante: Harbour 3.4 msvc2010:

http://www.jpatecnologia.com.br/arquivos/harbour34.zip

Aqui tem toda configuração que uso:

https://pctoledo.org/forum/viewto ... 43&t=17565

atualizado até aqui:
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/

A questão sobre Harbour 3.2 e 3.4 é relativa.
- Tem coisas que estão obsoletas, no Harbour 3.2 elas ainda fazem parte do default, e no Harbour 3.4 não fazem mais parte do default.
- Há pequenas diferenças entre 3.2 e 3.4, lógico, quem tem os fontes prontos pra um, vão se atrapalhar com o outro, mas isso é num uso mais avançado
- Tem LIBs adicionais que mantém compatibilidade com 3.2, e poderiam não ser adequadas com 3.4 (LIBs que não fazem parte do Harbour)

A grosso modo, quem usa a "parte comum", tanto faz se é 3.2 ou 3.4, funciona do mesmo jeito.
Pra meu uso, prefiro muito mais o Harbour 3.4, aliás... tem coisas que eu uso que simplesmente não funcionam no Harbour 3.2
Isso não significa que seja defeito, apenas eu teria que conhecer linguagem C pra poder fazer a mesma coisa no 3.2.
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:

Problema para compilar programa com Harbour 3.2

Mensagem por cjp »

Acho que minha pasta BCC era do tempo do HB 3.0 mesmo.

Realmente eu não fui claro quando falei da informação que tive do 3.4, mas é que realmente não lembro quem me disse isso, nem porquê.

Baixei o 3.4 que vc me mandou. Fiz todas as adaptações. Notei que ele tem falta de algumas das funções que eu usava (ex: hb_sendmail).

Mas a questão que realmente importa: de novo, não funcionou minha conexão ao banco de dados.

Meus amigos, estou desesperado. Por favor, me ajudem.
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

Quanto às funções, no geral trata-se apenas que foram renomeadas, isso não seria problema.
Mas chegou a testar com ele a conexão?

Consegue identificar algo mais quanto a esse seu uso de base de dados?

Só pra testar se é bloqueio do programa, ou dados errados na conexão
Coloque seus parâmetros e teste.
hbmk2 test.prg hbwin.hbc

Código: Selecionar todos

PROCEDURE Main

   LOCAL oConexao, oResultado

   oConexao := MySqlConnection()
   oResultado := oConexao:Execute( "SHOW PROCESSLIST" )
   WITH OBJECT oResultado
      DO WHILE .NOT. :Eof()
            ? :Fields( "User" ):Value, :FIelds( "Host" ):Value, :Fields( "db" ):Value, :Fields( "Command" )
           :MoveNext()
      ENDDO
      :Close()
   END WITH
   oConexao:Close()

   RETURN

FUNCTION MySqlConnection( cServer, nPort, cDatabase, cUser, cPassword )

   LOCAL cnConnection

   hb_Default( @cServer, 'X' )
   hb_Default( @cDatabase, "x" )
   hb_Default( @nPort, 3306 )
   hb_Default( @cUser, "x" )
   hb_Default( @cPassword, "x" )

   cnConnection:= win_OleCreateObject( "ADODB.Connection" )
   cnConnection:ConnectionString := "Driver={MySQL ODBC 3.51 Driver};Server=" + cServer + ";" + "Port=" + Ltrim( Str( nPort ) ) + ;
      ";Stmt=;Database=" + cDatabase + ";User ID=" + cUser + ";Password=" + cPassword + ";"
   cnConnection:CursorLocation    := 3
   cnConnection:CommandTimeOut    := 200 
   cnConnection:ConnectionTimeOut := 200 

   RETURN cnConnection
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

Vai que alterou usuário/senha ou outra coisa, e como está compilado não dá pra ver.
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:

Problema para compilar programa com Harbour 3.2

Mensagem por cjp »

Não funcionou a conexão no meu não.

Certeza que não alterei nada.

Mudei os X do teu test.prg para os dados da minha conexão e compilei como vc disse.

Mas não sei se funcionou ou não, pois não entendi muito bem a lógica da tua programação. Não tá dando nenhum retorno.

Coloquei alguns "debug" com ? para ver o que ocorre. Aparentemente, ele está travando na linha oResultado := oConexao:Execute( "SHOW PROCESSLIST" ).
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

Esqueci de uma linha, a que abre a conexão, logo no início.

Código: Selecionar todos

oConexao := MySqlConnection() 
oConexao:Open()   // esta aqui
 oResultado := oConexao:Execute( "SHOW PROCESSLIST" ) 
a rotina que postei abre a conexão, e executa um comando SQL que vai retornar a consulta em forma de arquivo.
também usa o ODBC do mysql, que é a mesma coisa usada no seu aplicativo.

Se aí usa a o ODBC e o servidor, e seu aplicativo também, é um teste pra ver se os parâmetros estão certos, se o programa chega ao servidor usando seus parâmetros.

se Isso também não funcionar, então o problema será nessa parte em comum.
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:

Problema para compilar programa com Harbour 3.2

Mensagem por cjp »

Acho que agora conectou. Veja no anexo se era isso que deveria retornar, e se isso realmente significa que conectou.

Caso positivo, isso significa que o teu está funcionando. Como faço para reproduzir isso no meu sistema?
Anexos
test.png
test.png (8.03 KiB) Exibido 4895 vezes
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

Era só um comando pra listar os processos no servidor MySQL.
Se listou, então a string e os parâmetros continuam corretos.
A mesma string colocada no aplicativo, que já foi testada, significa que essa parte está ok.

Não uso isso.
Testei usando o exemplo em \harbour\contrib\sddodbc\tests\test2.prg
Aqui conectou, após alterar o driver, e os parâmetros.

Se possível, compile com -w3 -es2, em todo caso, alguns chutes:

Código: Selecionar todos

hbmk2 arquivo.hbp sddobc.hbc -rebuild

hbmk2 arquivo.hbp sddodbc.hbc -u+dbinfo.ch -rebuild
Pelo menos enquanto não resolver o problema, pode ser interessante usar o -rebuild pra garantir que um teste anterior não afete nada.

Não querendo ser chato, mas já sendo: tem que saber o que está usando, e do que depende o que está usando.

Me baseei no que está neste tópico, que usa a sddodbc:
https://pctoledo.org/forum/viewto ... 019#p88251

Se está usando o Harbour 3.4 que postei, estará igual na minha máquina, então deverá funcionar do mesmo jeito.
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

O exemplo do Harbour, que aqui funcionou, depois de colocar a string compatível.

Código: Selecionar todos

#require "rddsql"
#require "sddodbc"

#include "simpleio.ch"

REQUEST SQLMIX, SDDODBC

PROCEDURE Main()

   LOCAL nConnection, nI, aI

#if defined( __HBSCRIPT__HBSHELL )
   rddRegister( "SQLBASE" )
   rddRegister( "SQLMIX" )
   hb_SDDODBC_Register()
#endif

   Set( _SET_DATEFORMAT, "yyyy-mm-dd" )

   rddSetDefault( "SQLMIX" )
   nConnection := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 5.1 Driver};dsn=;User=test;database=test;" } )
   IF nConnection == 0
      ? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
      RETURN
   ENDIF
   ? nConnection
   ? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
   ? rddInfo( RDDI_EXECUTE, "CREATE TABLE country " + ;
      "(CODE char(3), NAME char(50), RESIDENTS int(11))" )
   ? rddInfo( RDDI_EXECUTE, "INSERT INTO country values " + ;
      "('LTU', 'Lithuania', 3369600), " + ;
      "('USA', 'United States of America', 305397000), " + ;
      "('POR', 'Portugal', 10617600), " + ;
      "('POL', 'Poland', 38115967), " + ;
      "('AUS', 'Australia', 21446187), " + ;
      "('FRA', 'France', 64473140), " + ;
      "('RUS', 'Russia', 141900000)" )
   ? dbUseArea( .T., , "SELECT * FROM country", "country" )
   ? "LASTREC:", LastRec()
   DO WHILE ! Eof()
      aI := Array( FCount() )
      FOR nI := 1 TO FCount()
         aI[ nI ] := FieldGet( nI )
      NEXT
      ? RecNo(), hb_ValToExp( aI )
      dbSkip()
   ENDDO
   ? "LASTREC:", LastRec()
   dbCloseAll()

   RETURN
Se não funcionar aí.... vai ter que pesquisar o que pode estar interferindo.

Só pra reforçar:
Meu Harbour é padrão, é o 3.4, fontes baixados do github.
Só pego os fontes e compilo com msvc 2010.
Significa que não precisa nada adicional.
De resto é só a configuração que já deve ter usado pra poder compilar, identificando o compilador, e as pastas include/lib.
.
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:

Problema para compilar programa com Harbour 3.2

Mensagem por cjp »

Sim, estou testando com o 3.4, da forma como vc disse.

Esse link que vc citou, que é o tutorial do Toledo, foi de onde eu comecei a usar a MySQL; meu sistema está todo baseado nele.

Linkey o exemplo que vc postou, das duas formas que vc mencionou. Ele sempre trava na linha IF nConnection == 0, o que não me parece fazer sentido.

Coloquei um teste antes dessa linha para ver como está a nConnection, não está retornando nada (nem Nil, nem valor nenhum). É exatamente isso que ocorre no meu sistema quando linko com o 3.4.

Também testei linkar este teu exemplo com o 3.2 (finalmente achei uma versão antiga em um computador velho que tinha guardado), e, estranhamente, está dando o mesmo problema. No meu sistema, linkando com essa mesma versão do 3.2, funciona.
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

Quando diz 3.4, é o que passei do msvc2010, ou é o baixado do site do Harbour 3.4?

Se é o que passei, está exatamente igual ao da minha máquina, e aqui funciona.

Se for o do site do Harbour 3.4, ele é 64 bits, e graças à Microsoft, há diferença sobre quem enxerga o que: ODBC instalado pra 32 bits não fica visível pra 64 bits e vice-versa
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:

Problema para compilar programa com Harbour 3.2

Mensagem por cjp »

Sim, é o que vc passou.
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

Agora é que não faz sentido.

Detalhe: não sei porque tem erro que o Harbour só mostrar depois de dar ENTER.
Durante testes, só aparecia o erro depois do ENTER.

Usando o arquivo original do Harbour:

Código: Selecionar todos

d:\harbour\contrib\sddodbc\tests>hbmk2 test2
hbmk2: Processing environment options: -comp=msvc
hbmk2: Processing local make script: hbmk.hbm
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test2.prg'...
Lines 107, Functions/Procedures 1
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\h
test2.c

d:\harbour\contrib\sddodbc\tests>test2

Error BASE/1003  Variable does not exist: RDDI_CONNECT
Called from MAIN(21)
segundo teste, colocando o ch que faltava.

Código: Selecionar todos

d:\harbour\contrib\sddodbc\tests>hbmk2 test2 -u+dbinfo.ch
hbmk2: Processing environment options: -comp=msvc
hbmk2: Processing local make script: hbmk.hbm
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test2.prg'...
Lines 107, Functions/Procedures 1
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_5zxj9b.dir\test2.c'... Done.
test2.c

d:\harbour\contrib\sddodbc\tests>test2

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
d:\harbour\contrib\sddodbc\tests>
Alterando apenas pra ODBC 3.51, mas com a mesma informação do fonte original, com usuário inexistente, servidor inexistente.

Código: Selecionar todos

d:\harbour\contrib\sddodbc\tests>hbmk2 test2 -u+dbinfo.ch
hbmk2: Processing environment options: -comp=msvc
hbmk2: Processing local make script: hbmk.hbm
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test2.prg'...
Lines 107, Functions/Procedures 1
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_1qumvu.dir\test2.c'... Done.
test2.c

d:\harbour\contrib\sddodbc\tests>test2

Could not connect to server       2003 HY000 [MySQL][ODBC 3.51 Driver]Can't connect to MySQL server
on 'localhost' (10061)
Colocando apenas o nome do servidor correto

Código: Selecionar todos

d:\harbour\contrib\sddodbc\tests>hbmk2 test2 -u+dbinfo.ch
hbmk2: Processing environment options: -comp=msvc
hbmk2: Processing local make script: hbmk.hbm
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test2.prg'...
Lines 107, Functions/Procedures 1
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_blsvrj.dir\test2.c'... Done.
test2.c

d:\harbour\contrib\sddodbc\tests>test2

Could not connect to server       1045 HY000 [MySQL][ODBC 3.51 Driver]Access denied for user 'test'@
'josejpa' (using password: NO)
d:\harbour\contrib\sddodbc\tests>
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

Problema para compilar programa com Harbour 3.2

Mensagem por JoséQuintas »

E com tudo certo, inclusive a senha que no fonte original não existe.

Código: Selecionar todos

d:\harbour\contrib\sddodbc\tests>hbmk2 test2 -u+dbinfo.ch
hbmk2: Processing environment options: -comp=msvc
hbmk2: Processing local make script: hbmk.hbm
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test2.prg'...
Lines 107, Functions/Procedures 1
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_2x8ftx.dir\test2.c'... Done.
test2.c

d:\harbour\contrib\sddodbc\tests>test2

         1
.F.
.T.
.T.
.T.
LASTREC:          1
         1 {"LTU", "Lithuania", 3369600}
         2 {"USA", "United States of America", 305397000}
         3 {"POR", "Portugal", 10617600}
         4 {"POL", "Poland", 38115967}
         5 {"AUS", "Australia", 21446187}
         6 {"FRA", "France", 64473140}
         7 {"RUS", "Russia", 141900000}
LASTREC:          7
d:\harbour\contrib\sddodbc\tests>
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