Clipper On Line • Ver Tópico - E-social Consulta

E-social Consulta

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

Moderador: Moderadores

 

E-social Consulta

Mensagempor JoséQuintas » 13 Set 2017 23:38

Vamos recapitular programação:
Sem formatar, assim o texto fica visível sem precisar expandir.
E também não é pra copiar, então não precisa formatação.

CREATE CLASS Minhoca
METHOD Send( x )
END CLASS

METHOD Send( x ) CLASS Minhoca
RETURN NIL


A classe minhoca tem o método Send()

x := Minhoca():New()
x:Send( "texto" )


Após definir que x era o objeto minhoca, foi chamado o Send() dele, ok, normal.

x := Minhoca():New()
x:AlgumaCoisa()


Isso vai dar erro de mensagem AlgumaCoisa() não existe, porque não existe mesmo.

x := 0
x:Send()


Isso vai dar erro, porque x não tem nada a ver com classe, e não tem Send(), mesmo erro: mensagem Send() Não existe.

x := win_OleCreateObject( "ServerXmlHTTP" )
x:Send( cTexto )


Esse objeto criado com base em ServerXmlHTTP é um objeto do WINDOWS, pra comunicação.
O objeto do Windows tem a "mensagem" Send().

Se dá erro de "message Send() não existe", é porque não criou o objeto, igual aos exemplos anteriores, mas que foram criados no Harbour.
Estamos apenas usando o objeto do Windows, não é nada criado no Harbour, o Harbour apenas faz uso do que já existe.
Se isso não der certo:
1) o nome do objeto pode estar errado, pode não ser ServerXmlHTTP, e por isso não cria
2) o Nome Send() pode estar errado, e por isso não encontra
3) a rotina que trata da conversa entre o Harbour e o objeto não funcionam do jeito que deveria, está com defeito.

No Harbour funciona, no xHarbour não, então vamos recapitular as possibilidades:

1) o nome do objeto pode estar errado, pode não ser ServerXmlHTTP, e por isso não cria

Já vimos que tem diferença entre Harbour e xHarbour no nome, não deveria mas tem.
Então é confirmar qual o nome correto a ser usado.

2) o Nome Send() pode estar errado, e por isso não encontra

Se no Harbour funciona, e o nome é esse, então existe. Esta opção pode ser descartada.

3) a rotina que trata da conversa entre o Harbour e o objeto não funcionam do jeito que deveria, está com defeito.

Esta é uma possiblidade. Como já vimos, no xHarbour tem várias rotinas pra fazer a mesma coisa, e diferentes.
Se existem rotinas diferentes, é porque uma funciona e outra não.
Se todas continuam existindo, é sinal de que depende de outros fatores pra funcionar, pode ser compilador/lib/etc.

Pra eliminar qualquer interferência externa, a melhor coisa é criar um exemplo básico, e compilar em separado do aplicativo.
Se funcionar em separado, só com Harbour, e não com a LIB.... problema de compatibilidade com a LIB.
Se funcionar num lugar e em outro não, então depende de qual LIB está sendo usada.

Sugestão:
Aonde funciona com xHarbour, coloquem versão do xHarbour, compilador C, e qual biblioteca gráfica está sendo usada, talvez até que LIBs adicionais estão sendo usadas, e talvez também a versão do Windows.
É bom começar a montar um banco de dados sobre o que funciona com o que, senão sempre vai ter isto de tentar descobrir porque sim e porque não.
Eu não uso Xharbour, não sei o que tem que ser feito, e cada vez quero menos saber sobre ele, porque é esquisito.
PIOR QUE ISSO: As LIBs gráficas são feitas pra funcionar com Harbour e XHarbour, e a maioria tem até função extra pra compensar falhas, o que pode ser bom pra XHarbour e pode estragar o Harbour.
Talvez até por isso as LIBs tenham Harbour próprio.

Só que aí fud... porque passamos a ter Harbour 3.2, Harbour 3.4, Harbour que vém com HMGE, Harbour que vém com Fivewin, Harbour que vém com sei lá qual lib...

Entenderam porque eu reclamo sobre compatibilidade?
Porque comentei que as LIBs estragam o Harbour e/ou Xharbour, como se criassem uma linguagem própria?
Acredito que exista diferença entre Harbour 3.2 e Harbour 3.4 nesse ponto também.
Manter compatível com Borland C 5.5 também é péssimo, ele é do tempo do Windows XP, não existia Windows Vista, Windows 7, Windows 8, Windows 10.
E muito menos Windows 64 bits !!!!!!
Pensem nisso.

Relacionem os detalhes do que funciona e aonde, conforme mencionei antes.

No Windows tem a opção de funcionar em modo de compatibilidade.
Isso também pode ser definido em arquivo MANIFEST.
É outra possibilidade pra usar compilador e fontes ultrapassados.

De repente o modo de compatibilidade poderia resolver, mesmo que seja quebra-galho, é uma opção disponível.
Só que pra isso: ou coloca no manifest, ou configura no Windows, talvez os dois juntos não dê certo.

Isso não é exagero: já precisei usar o modo de compatibilidade no Windows 10, pra poder conseguir imprimir com o Open Office.
Sem o modo de compatibilidade, nada de imprimir....
Se isso acontece até com Open Office, imaginem nos aplicativos de nós pobres mortais.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

E-social Consulta

Mensagempor JoséQuintas » 14 Set 2017 00:03

Exemplos de automação ADO na HMGE

createobject2.png


E pra terminar de fud....
Quando falamos de CreateObject(), estamos falando de CreateObject() do Harbour, do Xharbour, da HMG3, da HMGE, ou de qual?

createobject1.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

E-social Consulta

Mensagempor JoséQuintas » 14 Set 2017 00:23

Isso agora virou piada....

O Harbour tem uma biblioteca de compatibilidade com Xharbour contendo CreateObject()
Aí vém as LIBs e alteram pra outro CreateObject(), tanto Harbour quanto xHarbour....
Ou seja... compatibilidade com o que?

É tudo estragando tudo.....

É melhor Harbour ou Xharbour?
Se as LIBs fazem mudanças... nem sei se faz diferença, é imprevisível para os dois.
Isso a nível de PRG, nem sei a nível de fonte em C.

É por essas e outras que acabei preferindo ficar em console com GTWVG.
O resultado é sempre o previsto.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

E-social Consulta

Mensagempor Itamar M. Lins Jr. » 14 Set 2017 09:31

Ola!
E pra terminar de fud....
Quando falamos de CreateObject(), estamos falando de CreateObject() do Harbour, do Xharbour, da HMG3, da HMGE, ou de qual?

Por isso o Viktor quando começou a dar manutenção na VWV,WVG etc.. falou da bagunça. Se observar depois que ele meteu a mão nestas libs, corrigiu muita coisa e apagou essas funções com o mesmo objetivo, criando uma só para todas.
Na Hwgui as funções começam com "HWG_" exatamente para não colidir com as de outras libs.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

E-social Consulta

Mensagempor Itamar M. Lins Jr. » 14 Set 2017 09:41

Ola!
Infelizmente na equipe do xHarbour, não tem mais ninguém que faça essa arrumação nos códigos.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

E-social Consulta

Mensagempor JoséQuintas » 14 Set 2017 10:08

Apenas uma correção no que mencionei:
CreateObject() no Harbour existia na versão 3.0
Nas versões atuais, trata-se apenas de compatibilidade xHarbour, na lib xhb.hbc

Por isso o Viktor quando começou a dar manutenção na VWV,WVG etc.. falou da bagunça. Se observar depois que ele meteu a mão nestas libs, corrigiu muita coisa e apagou essas funções com o mesmo objetivo, criando uma só para todas.


Com certeza observei e mencionei aqui, ele fez até melhor que isso:

1) Na hbwin.hbc, que são funções da API Windows, deixou compatíveis com Harbour a nível de PRG
2) Na GTWVG, parte do que era rotina de API Windows, moveu pra hbwin.hbc e também deixou compatível a nível de PRG

Algumas modificações e recursos que acrescentei na GTWVG não funcionam no Harbour 3.2 porque não é compatível a nível de PRG.
Vão dizer: devem ser rotinas "cabulosas".....
Não. o simples fato de pegar tamanho da janela já é problema no 3.2. O retorno não é numérico, é binário.
Retorno em binário, obriga rotinas adicionais também em C....

E das LIBs em geral:
É o que menciono sempre: se a rotina base estiver padronizada a nível de PRG, tudo pode ser PRG, não precisa rotina em C adicional pra converter.
API Windows é padrão, não importa se é GTWVG, GTWVW, MINIGUI, HWGUI, PQPGUI...

O que isso tem a ver com o assunto do tópico:
Caso as alternativas pra win_OleCreateObject() trabalhem com algum tipo de variável diferente das conhecidas por PRG, poderia ser uma causa dos problemas.
Se até tamanho de janela, que seria um número de 1 a 4000 dá problema, imaginem variáveis de tipo desconhecido.

As soluções são complicadas, já mencionei antes:
Se é pra deixar Xharbour igual Harbour.... é usar Harbour diretamente e pronto.
Assunto deste momento no grupo harbour-users: se é pra deixar Harbour 3.2 igual Harbour 3.4, é usar Harbour 3.4 diretamente e pronto, inclusive com a retirada do Borland C das opções de uso, porque ele impede de fazer melhorias, NINGUÉM dá manutenção em fonte Borland C.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

E-social Consulta - Resolvido

Mensagempor Eroni » 14 Set 2017 10:42

Bom dia e obrigado a todos que responderam.
José Quintas, obrigado pela aula.
Resolvido.
O que eu fiz:
Depois de fazer varios testes em separado, compilando com fivewin, compilando sem fivewin, compilando com xHarbour 123, compilando com 121, isso sempre fora do meu projeto, apenas tudo em um fonte, resolvi voltar ao meu projeto e descobrir por que na mesma tela, usando mesma classe, quando clicava no botão "Enviar" funcionava, e na mesma tela outro botão, "Consultar", não funcionava. Lendo os textos de compatibilidade, peguei o fonte win32ole.prg que estava anexado ao meu projeto, renomeei ele para sw_win32ole.prg, abri ele, e alterei o nome da classe ToleautoX para SW_ToleautoX, substituindo todas as ocorrências no fonte. Então quando chama xhb_CreateObject agora retorna SW_ToleautoX. Removi o win32ole.prg do projeto e deixei só este. Compilei e executei, funcionou ok.
Se foi só isso que resolveu? Não sei de certeza, mas agora posso continuar a trabalhar.

Gratos a todos mais uma vez.
xHarbour 1.2.1 FiveWin 1209 SQLRDD-SQLEX-xHarbour.org-March2010-build31
Eroni
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 19
Data de registro: 18 Mai 2015 09:15
Cidade/Estado: Criciuma/SC
Curtiu: 2 vezes
Mens.Curtidas: 2 vezes

E-social Consulta

Mensagempor JoséQuintas » 14 Set 2017 11:46

É trágico, mas acabei rindo.....
A solução pra tanto CreateObject() foi criar mais outro.... pra ter certeza sobre qual está sendo usado.

Uma sugestão: já deixar anotado no fonte, que está usando com xHarbour 1.2.3 e Fivewin. (não sei se é esse o uso final).

O bom é que teve solução: é forçar a entrada da rotina certa no EXE, porque tem repetidas. E pode depender do que cada um usa, cada um vai ter que fazer seu próprio teste.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

E-social Consulta

Mensagempor Eroni » 14 Set 2017 11:51

Pois é, concordo plenamente.
Usando xHarbour 121, FiveWin 1209 SqlRdd, já acertei a assinatura para constar.
Abraços.
xHarbour 1.2.1 FiveWin 1209 SQLRDD-SQLEX-xHarbour.org-March2010-build31
Eroni
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 19
Data de registro: 18 Mai 2015 09:15
Cidade/Estado: Criciuma/SC
Curtiu: 2 vezes
Mens.Curtidas: 2 vezes

E-social Consulta

Mensagempor JoséQuintas » 14 Set 2017 20:49

Presenciei mais um problema hoje, mas relacionado à CAPICOM, não sei se pode acontecer com o XMLHTTP, porque se for o MSXML5 pode ser....

Problema: Estava acusando erro no método Open() da CAPICOM.

Tudo instalado e configurado...

Motivo:
A segurança do Windows !!!!! Já presenciei isso num Windows Server, mas neste caso não era.
Dependendo do nível de segurança do Windows, ao baixar um arquivo da internet, ele fica bloqueado até que alguém entre lá em propriedades e clique em DESBLOQUEAR.
Enquanto não desbloquear, o Windows impede o acesso.

CAPICOM.DLL e MSXML5.DLL, geralmente instalamos manualmente, e geralmente baixando da internet.
É nessa hora que, dependendo da máquina, pode ficar bloqueado pra uso.

Acrescentem esta na lista de possibilidades de erro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

E-social Consulta

Mensagempor JoséQuintas » 18 Dez 2017 15:30

Acabo de descobrir mais uma nova nessa bagunça....

XHarbour não tem mais CreateObject(), apenas uma função vazia: FUNCTION CreateObject(); RETURN NIL

MAS.... FIVEWIN continua tendo CreateObject()

Será proposital????? ou será a do Harbour sendo vendida como parte do fivewin pra XHarbour???
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro