erro em compilação
Moderador: Moderadores
erro em compilação
Desculpe, mas não te entendi.
Postei o código acima. Tem algo errado nele?
Postei o código acima. Tem algo errado nele?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Assim fica difícil.cjp escreveu:Desculpe, mas não te entendi.
Postei o código acima. Tem algo errado nele?
Vai do seu jeito tradicional:
O fonte que postou funciona ?
Então copia pro outro que também vai funcionar.
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/
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/
erro em compilação
Mas não foi isso que eu fiz? Eu copiei do Harbour, que funciona. Mas no HwGui não está funcionando, e não entendo o porquê.
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Provavelmente porque faltou copiar a criação da variável, que é o que estou mencionando desde o começo, sobre o conteúdo da variável.cjp escreveu:Mas não foi isso que eu fiz? Eu copiei do Harbour, que funciona. Mas no HwGui não está funcionando, e não entendo o porquê.
Faltou ? não faltou ? Como é que alguém pode saber ? Só você mesmo aí olhando o seu fonte.
Fonte esse sendo compilado dentro da pasta do harbour, correndo o risco de estragar a ferramenta de trabalho, e nada mais funcionar depois.
Isso deu 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/
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/
erro em compilação
No meu fonte no Harbour também não tem inicialização da variável, só o que postei mesmo.
Deveria ter? Creio que sim. Mas como funciona no Harbour sem e não funciona na HwGui sem?
Como devo inicializar esta variável?
Deveria ter? Creio que sim. Mas como funciona no Harbour sem e não funciona na HwGui sem?
Como devo inicializar esta variável?
Inacio de Carvalho Neto
-
ivanil
- Usuário Nível 3

- Mensagens: 166
- Registrado em: 11 Set 2004 15:13
- Localização: Florianópolis/SC
erro em compilação
Ola Inacio,cjp escreveu:No meu fonte no Harbour também não tem inicialização da variável, só o que postei mesmo.
Deveria ter? Creio que sim. Mas como funciona no Harbour sem e não funciona na HwGui sem?
Como devo inicializar esta variável?
No meu ponto de vista, você precisa dar um passo para trás para entender o conceito,
O hwgui é uma biblioteca gráfica, não tem nada a ver com acesso a dados, a própria hwgui so funciona com a associação de harbour/xharbour, você poderia simplesmente mandar imprimir a variável que o Quintas mencionou a qual pode ter dado erro na abertura do bd e retornado nil por "n" fatores , enfim realmente não ha como entender o que se passa no seu código.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Entender o problema é fácil, entender o Inácio que é difícil.ivanil escreveu: enfim realmente não ha como entender o que se passa no seu código.
Tem um fonte que cria conexão
Tem um fonte que usa conexão
Ele copiou o fonte que usa conexão pra testar na hwgui.
No harbour funciona, na hwgui não.
alguma dúvida porque não funciona ?
Considerando um lado "justificável", talvez tenha faltado PUBLIC, e não o fonte inteiro.
Se testar hwgui começa assim, sei não.... melhor entender primeiro o que usa, antes de partir para o que não usa.
Por outro lado.... aproveite que vai reescrever fontes, pra entender melhor como as coisas funcionam.
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/
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/
erro em compilação
Esta parte eu entendi. E por isso não estou entendendo o que está acontecendo, pois o fonte do Hwgui está exatamente igual ao do Harbour, sendo que neste funciona, naquele não.No meu ponto de vista, você precisa dar um passo para trás para entender o conceito,
O hwgui é uma biblioteca gráfica, não tem nada a ver com acesso a dados, a própria hwgui so funciona com a associação de harbour/xharbour, você poderia simplesmente mandar imprimir a variável que o Quintas mencionou a qual pode ter dado erro na abertura do bd e retornado nil por "n" fatores , enfim realmente não ha como entender o que se passa no seu código.
Imagino que para vc que é muito bom nisso seja fácil pra entender o problema, pra mim não está fácil. Sim, tenho dúvida do porquê não funciona.Entender o problema é fácil, entender o Inácio que é difícil.
Tem um fonte que cria conexão
Tem um fonte que usa conexão
Ele copiou o fonte que usa conexão pra testar na hwgui.
No harbour funciona, na hwgui não.
alguma dúvida porque não funciona ?
Considerando um lado "justificável", talvez tenha faltado PUBLIC, e não o fonte inteiro.
Se testar hwgui começa assim, sei não.... melhor entender primeiro o que usa, antes de partir para o que não usa.
Por outro lado.... aproveite que vai reescrever fontes, pra entender melhor como as coisas funcionam.
Só para deixar claro, não estou misturando os fontes. Fiz um fonte de teste apenas para o hwgui, copiando essa parte da conexão do fonte anterior, do Harbour.
Pra deixar claro, vou postar ele inteiro aqui:
Código: Selecionar todos
#include "hwgui.ch"
Function Main
Local oDlg, oFont, oFontSay, oFontC
Local nRecs :=0
Local nTp :=0, oSAY1, oSAY2
private nInicio :=0
public conexaoado
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700
PREPARE FONT oFontC NAME "Georgia" WIDTH 0 HEIGHT -15
INIT DIALOG oDlg TITLE "Teste de SQL" AT 100, 100 SIZE 340, 300 FONT oFont
exqado("insert into ativ(data,hora,acao,detalhes) values('2023-08-03','"+time()+"','Testesql34','Testesql34:automático')",3)
@ 20,12 SAY oSAY1 CAPTION "Escolha:" SIZE 260, 24 ;
FONT oFontSay COLOR 8404992
@ 20,50 BUTTON "Cadastra teste manualmente" SIZE 180,28 ;
ON CLICK {||cadastrateste()}
IF ++nRecs == 100
hwg_processmessage() ; nRecs := 0
EndIf
@ 20,150 SAY oSAY2 CAPTION str(nTp) SIZE 180, 28
@ 20, 250 LINE LENGTH 300
@ 120,258 BUTTON "Close" SIZE 100,30 ON CLICK {||oDlg:Close()}
ACTIVATE DIALOG oDlg
Return Nil
function cadastrateste
Local oDlg, oFont, oSAY1
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
INIT DIALOG oDlg TITLE "Cadastra manualmente" AT 280, 210 SIZE 250, 250 FONT oFont
exqado("insert into ativ(data,hora,acao,detalhes) values('2023-03-08','"+time()+"','Testesql34','Testesql34:manual')",3)
@ 10,40 SAY oSAY1 CAPTION "Teste cadastrado" SIZE 360, 36
@ 10,190 BUTTON "Ok" SIZE 100, 32 ON CLICK {||oDlg:Close()}
ACTIVATE DIALOG oDlg
return Nil
function exqado(cQuery,nServidor)
local sair :="N"
local exq
private cUsuar, cSenha
private nVzexq :=0
private cMessage :=""
// --------------------------------------conexão----------------------------------
if empty(nServidor) .or. nServidor=NIL
nServidor=3
endif
do while .t.
nVzexq++
if nVzexq>2
return .f.
endif
if nVzexq>1
Vez=0
cSair="N"
do while cSair#"S"
bError := ErrorBlock( {|e| Break(e) } )
begin sequence
conexaoado=ConexaoMySQL(nServidor)
conexaoado:open()
cSair="S"
recover using e
Vez++
if Vez>3
?"Não abriu a conexão; tente novamente mais tarde"
inkey(1)
cSair="E"
else
loop
endif
endsequence
ErrorBlock( bError )
if cSair="E"
return .f.
endif
enddo
endif
// -------------------------------------------executando a query--------------------------------------
exq=conexaoado:execute(cQuery)
exit
enddo
//------------------encerrando a conexão------------------------
if nVzexq>1
conexaoado:Close()
endif
return .t.
FUNCTION Mariadb_StringConexao()
LOCAL cTxt := ""
if nVzexq<5
cTxt += "Driver={MariaDB ODBC 3.1 Driver}"
ELSE
cTxt += "Driver={MySQL ODBC 3.51 Driver}"
ENDIF
RETURN cTxt
FUNCTION ConexaoMySQL(nProvedor)
LOCAL oCn := win_OleCreateObject("ADODB.Connection")
Local cServer :="mysql.xxx.com.br"
Local cDatabase :="xxx"
Local cUser :="xxx"
Local cPassword :="xxx"
oCn:ConnectionString := "DRIVER={MariaDB ODBC 3.1 Driver};TCPIP=1;SERVER=" + ;
cServer + ";Database=" + cDatabase + ";UID=" + cUser + ";PWD=" + cPassword + ";PORT=3306"
oCn:CursorLocation := 3
RETURN oCnAgradeço toda ajuda.
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Vai fazer fonte assim lá na casa do Carvalho.... literalmente...
Duvido que isso funcione em algum lugar.
Como foi dito desde o começo, usar variável vazia não funciona.
É só remover lixo do fonte.
Remova o lixo do fonte que não serve pra nada: nVZEXQ
Contador que não conta é inútil.
Duvido que isso funcione em algum lugar.
Como foi dito desde o começo, usar variável vazia não funciona.
É só remover lixo do fonte.
Remova o lixo do fonte que não serve pra nada: nVZEXQ
Contador que não conta é inútil.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Sei lá porque insert no teste, mas porque complicar ?
Código: Selecionar todos
#include "hwgui.ch"
MEMVAR cnSQL
FUNCTION Main
LOCAL oDlg, oFont, oFontSay
LOCAL nTp :=0, oSAY1, oSAY2
PUBLIC cnSQL
cnSQL := ConexaoMySQL()
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700
INIT DIALOG oDlg TITLE "Teste de SQL" AT 100, 100 SIZE 340, 300 FONT oFont
cnSQL:Execute("insert into ativ(data,hora,acao,detalhes) values('2023-08-03','"+Time()+"','Testesql34','Testesql34:automático')")
@ 20,12 SAY oSAY1 CAPTION "Escolha:" SIZE 260, 24 ;
FONT oFontSay COLOR 8404992
@ 20,50 BUTTON "Cadastra teste manualmente" SIZE 180,28 ;
ON CLICK {||cadastrateste()}
@ 20,150 SAY oSAY2 CAPTION Str(nTp) SIZE 180, 28
@ 20, 250 LINE LENGTH 300
@ 120,258 BUTTON "Close" SIZE 100,30 ON CLICK {||oDlg:Close()}
ACTIVATE DIALOG oDlg
cnSQL:Close()
RETURN Nil
FUNCTION cadastrateste
LOCAL oDlg, oFont, oSAY1
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
INIT DIALOG oDlg TITLE "Cadastra manualmente" AT 280, 210 SIZE 250, 250 FONT oFont
cnSQL:Execute("insert into ativ(data,hora,acao,detalhes) values('2023-03-08','"+Time()+"','Testesql34','Testesql34:manual')")
@ 10,40 SAY oSAY1 CAPTION "Teste cadastrado" SIZE 360, 36
@ 10,190 BUTTON "Ok" SIZE 100, 32 ON CLICK {||oDlg:Close()}
ACTIVATE DIALOG oDlg
RETURN Nil
FUNCTION ConexaoMySQL()
LOCAL cnSQL := win_OleCreateObject("ADODB.Connection")
LOCAL cServer :="mysql.xxx.com.br"
LOCAL cDatabase :="xxx"
LOCAL cUser :="xxx"
LOCAL cPassword :="xxx"
cnSQL:ConnectionString := "DRIVER={MariaDB ODBC 3.1 Driver};TCPIP=1;SERVER=" + ;
cServer + ";Database=" + cDatabase + ";UID=" + cUser + ";PWD=" + cPassword + ";PORT=3306"
cnSQL:CursorLocation := 3
RETURN cnSQL
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/
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/
-
ivanil
- Usuário Nível 3

- Mensagens: 166
- Registrado em: 11 Set 2004 15:13
- Localização: Florianópolis/SC
erro em compilação
Olá Inácio;
Sem levar o mérito da lógica em si de seu código; perceba que você esta mesclando comandos console com gráfico, teoricamente seu sistema deve ir para o back ou travar, mas siga o código do Quintas, acho que faltou abrir a conexão, mas é um bom começo.
Grande abraço.
Sem levar o mérito da lógica em si de seu código; perceba que você esta mesclando comandos console com gráfico, teoricamente seu sistema deve ir para o back ou travar, mas siga o código do Quintas, acho que faltou abrir a conexão, mas é um bom começo.
Grande abraço.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Não.ivanil escreveu:acho que faltou abrir a conexão.
Levei um tempo pra entender o erro, tive até que usar o debug.
Criou um contador de 1 a 2 (inútil)
Usava a conexão com o contador em 1, com variável vazia.
E só iria colocar conteúdo com o contador em 2, após dar o erro.
Com certeza é fonte copiado e mexido de qualquer jeito, pode ver que tem teste de resposta pra pergunta nenhuma também.
E com certeza NUNCA funcionaria como estava, não tem como ele dizer que "no harbour" funciona.
O alinhamento errado dá indícios de fonte apagado.
Nota: tive que omitir linhas na visualização pra caber na tela a parte que interessa.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Inácio
Como deu pra ver, seu fonte estava muito ruim.
Ao invés de partir agora pra LIB gráfica, pode ser mais interessante primeiro procurar organizar os fontes.
A gente aprende com isso também.
Mas procure SE COBRAR, pra não complicar o que não precisa ser complicado.
Variável é tudo.
Não é pra largar variáveis de qualquer jeito no fonte.
Toda variável tem um começo, e tem um uso.
Variável local começa no início da rotina, e vai embora no final.
Compilação -w3 -es2 ajuda muito nisso.
Variável private e public, são variáveis que não se sabe de onde vém e pra onde vão, e o compilador não pode ajudar a conferir.
Acaba sendo fácil ter variáveis inúteis, ou variáveis sem conteúdo.
Se não organizar os fontes primeiro, vai ter problemas como o que acabou de acontecer.
Mas não se trata apenas de organizar, mas de organizar pra entender o que faz e porque faz.
Como deu pra ver, seu fonte estava muito ruim.
Ao invés de partir agora pra LIB gráfica, pode ser mais interessante primeiro procurar organizar os fontes.
A gente aprende com isso também.
Mas procure SE COBRAR, pra não complicar o que não precisa ser complicado.
Variável é tudo.
Não é pra largar variáveis de qualquer jeito no fonte.
Toda variável tem um começo, e tem um uso.
Variável local começa no início da rotina, e vai embora no final.
Compilação -w3 -es2 ajuda muito nisso.
Variável private e public, são variáveis que não se sabe de onde vém e pra onde vão, e o compilador não pode ajudar a conferir.
Acaba sendo fácil ter variáveis inúteis, ou variáveis sem conteúdo.
Se não organizar os fontes primeiro, vai ter problemas como o que acabou de acontecer.
Mas não se trata apenas de organizar, mas de organizar pra entender o que faz e porque faz.
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/
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/
erro em compilação
O contador está no original no Harbour, e tem uma função. Ao copiar, esqueci de retirá-lo. Desculpe.
Entendi agora que faltava abrir a conexão (no teu exemplo também faltou), coloquei e funcionou. Obrigado.
Entendi agora que faltava abrir a conexão (no teu exemplo também faltou), coloquei e funcionou. Obrigado.
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
erro em compilação
Então ainda não entendeu.cjp escreveu:Entendi agora que faltava abrir a conexão (no teu exemplo também faltou)
Não faltava ABRIR
Faltava o conteúdo da variável.
Estava usando uma variável VAZIA.
Também daria erro se não tivesse aberto a conexão, mas aí seria outro erro.
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/
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/
