Página 3 de 5
Problema para compilar programa com Harbour 3.2
Enviado: 15 Set 2016 13:39
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.
Problema para compilar programa com Harbour 3.2
Enviado: 15 Set 2016 13:55
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.
Problema para compilar programa com Harbour 3.2
Enviado: 15 Set 2016 17:35
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.
Problema para compilar programa com Harbour 3.2
Enviado: 15 Set 2016 18:55
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
Problema para compilar programa com Harbour 3.2
Enviado: 15 Set 2016 19:00
por JoséQuintas
Vai que alterou usuário/senha ou outra coisa, e como está compilado não dá pra ver.
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 00:45
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" ).
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 06:29
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.
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 11:51
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?
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 13:58
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.
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 14:08
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.
.
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 16:40
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.
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 16:47
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
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 17:03
por cjp
Sim, é o que vc passou.
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 18:01
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>
Problema para compilar programa com Harbour 3.2
Enviado: 16 Set 2016 18:04
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>