Convertendo Sistema do GASPRO para Harbour

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

Moderador: Moderadores

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Re: Ver erros na compilacao/Save to

Mensagem por Jairo Maia »

Olá Alexandre,

Baixei o fonte indicado pelo Sygecom, e verifiquei rapidamente. Parece que vai ajudar com meu problema de codigo de barras, vou verificar cuidadosamente quando retomar a migração. Foi um belo trabalho do autor, embora achei algumas coisas bem estranhas, como a função "NomeExe" por ex.

Outra coisa: me parece que ela neutraliza a funcionalidade do mouse. O mouse em sua aplicação está funcionando?

Sobre o problema das consultas relacionais:
Em meu aplicativo está 100% funcional. Então lembrei que os fontes que estou trabalhando a migração, foi gerado por uma versão anterior do gas, a 3.1. Depois disso, toda alteração foi manual.

A BRWFUNC também sofreu alterações severas para adaptação ao meu projeto, não tem como compartilha-la. Porém, esta semana vou substituí-la por uma da versão 4, apenas para tentar identificar onde está o problema. Tenho aplicações com a versão 4 que serão migradas depois.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Re: Ver erros na compilacao/Save to

Mensagem por Alexandre Silva »

1-
sygecom escreveu:Outra coisa: me parece que ela neutraliza a funcionalidade do mouse. O mouse em sua aplicação está funcionando?
Sim o mouse foi neutralizado.. nao é minha prioridade agora..meu usuarios nao usavam, o que preciso é migrar para 32 bits devido o seven 64, vc nao tem nocao da pressao..

2-
Jairo Maia escreveu:foi gerado por uma versão anterior do gas, a 3.1.
Eu uso a ultima versao do GAS 4.0o E tenho esse problema do relacionamento na brwfunc(), só no Harbour, e nao é uma funcao da LIB, é funcao que sempre existiu.

3-
sygecom escreveu:Tenho aplicações com a versão 4 que serão migradas depois.

Só me resta esperar...
Editado pela última vez por Alexandre Silva em 26 Abr 2011 21:35, em um total de 1 vez.
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Ver erros na compilacao/Save to

Mensagem por sygecom »

Olá Alexandre,
Sem mostrar o problema fica difícil de lhe ajudar...boa sorte.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Convertendo Sistema do GASPRO para Harbour

Mensagem por Alexandre Silva »

Segue pacote com um sistema
usuario supervisor senha rom ou usuaro s senha s
Veja a consulta gravada em Romaneio.. quando navega nao atualiza os produtos embaixo
mesmo apertando J para ir para parte de baixo, precisa fazer um Control Page Up para atualizar

tive que fazer em duas pates pois o limite aqui é 100K

parte1
p1.rar
Prog em Gas pro 4.0o versao harbour
(78.93 KiB) Baixado 627 vezes
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Convertendo Sistema do GASPRO para Harbour

Mensagem por Alexandre Silva »

Parte 2
p2.rar
(80.5 KiB) Baixado 680 vezes
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Convertendo Sistema do GASPRO para Harbour

Mensagem por Pablo César »

Oi Alexandre,

Eu baixei seu pacote, compile com HMG em modo console, adicionei SetMode(25,80) no ROMA.PRG no inicio e naveguei mna consulta de romaneios. Realmente o segundo browser (registros filhos) não está sendo atualizado quando navega no browse de registros pai. O que eu pude notar assim por cima, que os br_w:refreshall() não estão sendo executados, possivelmente por causa do conteúdo da variável br_outro. Talvez deveria ser PUBLIC ou não está sendo devidamente atribuída. Faz tempo que não trabalho com o GAS, e os seus código (diga-se de passagem: são muito bons) no entanto muito confusos para alterar algo manualmente. Por isso, aconselho ao colega não ficar atrelado a sistemas desevonvidos por gerador de aplicação. Não que sejam ruins e sim para estimular a sua aptidão criativa no desenvolvimento. Pois no passar dos anos, se não é você mesmo quem criou os fontes, fica muito dificil lembrar da lógica e poder alterá-los de forma consciente. Sei que você tem que fazer funcionar para o momento, mas procure fazer seus proprios browses ou seu próprios códigos.

Vou intentar buscar o defeito no meio de tanto código... pena que hoje estou com pouco tempo. Mas se conseguir, vou reportar o resultado.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Convertendo Sistema do GASPRO para Harbour

Mensagem por Pablo César »

Alexandre, achei um solução do tipo "gambiarra", me desculpe mas como não conheço esse código, tenho dificuldades em curto prazo de analisar e poder mexer no lugar mais apropriado. Mas ja conseguí resolver o problema do "J". Você altere o ROMFUNC.PRG apartir da linha 1182 e adicione o bloco abaixo em cor rosado, como mostra a figura:
Imagem
Vou seguir procurando e ver se consigo fazer que as teclas de navegação tenha incidência no segundo browse.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Convertendo Sistema do GASPRO para Harbour

Mensagem por Pablo César »

No arquivo ROM_FUNC.PRG parece que vocÊ modificou algo que no Clipper funcionava.
Imagem
Você poderia mostrar como estava antes ? Por quê modificou ?

Sei que estou perto de achar... mas outra forma de atualizar os dados é diminuindo o tempo do REFRESH. Pressione a tecla - (menos do teclado numérico) e deixe em 5 segundos. Isso é um apaliativo até encontrar-mos o erro.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Convertendo Sistema do GASPRO para Harbour

Mensagem por Alexandre Silva »

1-Quanto ao KEYB quando aperta J, até atualiza o browse debaixo quando apertar J. mas ao voltar para o Browse de cima, joga no final do arquivo..nao é bom

2-
Pablo César escreveu:Você poderia mostrar como estava antes ? Por quê modificou ?
Ai que tá, nao foi mudificado, se voce compilar com a LiB do gas, quando passar por essa rotina,
e por esta clausua: IF chv_1 != &chv_rela .OR. !br_outro:stable , vai entar
O que aconte aqui: O sistema verifica se a chave de ligacao dos 2( browsers/base de dados), que esta em cima é igual a debaixo, se nao for, porque mudou em cima, o browse de baixo sofre o INI_ARQ(), se atualiza
Gambiarra
coloque if .t. e agora funciona..pois sempre entra.. ruim que vai atualizar para qualquer tecla de navegacao..
Outro efeito indesejado, se vc selecionar um registro em cima que nao tenha itens relacionados em baixo..
a principio vai mostar 0, ai voce aperta J, muda para baixo, se começar a subir e descer nao vai achar o inicio e o fim do arquivo, ficha enchendo de registros...0


Código: Selecionar todos


STATIC FUNC MOSTRA_RELA()
LOCAL ok:=.f.
PRIV chv_rela, criterio, cpord, cmr_, chv_1, chv_2, op_sis
IF TYPE("br_outro")="O"                             // tem outra janela aberta?
   id_carg = br_outro:cargo
   IF !EMPT(id_carg[3])                             // a janela esta relacionada?
      criterio = id_carg[1]                         // restabelece o filtro
      cpord    = id_carg[2]                         // ordem e a
      chv_rela = id_carg[3]                         // relacao entre as janelas
      cmr_     = id_carg[5]                         // marcacao de registros
      SELE (outro_db)                               // seleciona dbf da janela
      op_sis=EVAL(qualsis,ALIAS())                  // sua subscricao no vetor sistema
      PEGACHV2()                                    // acha o inicio/fim da relacao
      **** atencao aqui,, no clipper entrava abaixo
      IF chv_1 != &chv_rela .OR. !br_outro:stable   // precisa remonta-la?
         INI_ARQ()                                  // acha o inicio da relacao
         br_reg_out = RECNO()                       // salva reg atual
         br_outro:rowpos := 1                       // cursor na 1a. lin do browse
         ok:=.t.                                    // tem que remontar a janela
      ENDI
      SELE (m_origem)                               // seleciona janela superior
   ENDI
ENDI
RETU ok

* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Convertendo Sistema do GASPRO para Harbour

Mensagem por Pablo César »

Quanto ao KEYB quando aperta J, até atualiza o browse debaixo quando apertar J. mas ao voltar para o Browse de cima, joga no final do arquivo..nao é bom
Você testou colocando KEYBOARD CHR(30)+CHR(31) ? Joga no final ? Só se for no segundo browse de baixo ! No primeirobrowse ele não muda, por isso está IF SELECT()=2, justamente só para executar quando deixar o segundo browse. Você confirma isto ??
Outro efeito indesejado, se vc selecionar um registro em cima que nao tenha itens relacionados em baixo..
a principio vai mostar 0, ai voce aperta J, muda para baixo, se começar a subir e descer nao vai achar o inicio e o fim do arquivo, ficha enchendo de registros...0
Tenho putra gambiarra para você implementar, só não sei se te interessa, pois eu venho resolvendo em mira do meu desconhecimento a fundo deste código. Bom se interessar: edite o ROM_FUNC.PRG e insira na linha 680 como mostra a figura abaixo: Imagem
Isto impedirá o adicionamento de 0 quando não houverem registros filhos.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Convertendo Sistema do GASPRO para Harbour

Mensagem por Alexandre Silva »

Fiz examente como vc passou...atualiza quando vai pra o browse debaixo..mas quando volta também..joga no final, meu objetivo é atualizar quando navega.. por enquanto vou fazer executar o mostra_rela() a cada tecla..

Código: Selecionar todos


 **** atencao aqui,, no clipper entrava abaixo, nao harbour nao
      IF .t.  // chv_1 != &chv_rela .OR. !br_outro:stable   // precisa remonta-la?
         INI_ARQ()                                  // acha o inicio da relacao
         br_reg_out = RECNO()                       // salva reg atual
         br_outro:rowpos := 1                       // cursor na 1a. lin do browse
         ok:=.t.                                    // tem que remontar a janela
      ENDI

* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Convertendo Sistema do GASPRO para Harbour

Mensagem por Pablo César »

atualiza quando vai pra o browse debaixo..mas quando volta também..joga no final
Tem algo de errado. Só se o código fonte que você postou difere do que você está usando. Para mim somente vai para o ultimo registro só quando dá o J de baixo pra cima. É dizer o browse de cima não muda de posição. Veja bem Alexandre, o propósito de ir até o ultimo registro no segundo browse é justamente para dar idéia de que os registros mudaram. Pois antes sem essa implementação do KEYBOARD, parecia nunca mudar. Para ter certeza qual é o select(), ponha um alert mostrando o str(select()) ou até mesmo pode mudar de IF SELECT()=2 para IF ALIAS()="ITENS".

Essa questão de entrar ou não naquela condição, acho que agora vai... mude IF chv_1 != &chv_rela .OR. !br_outro:stable para IF !EMPTY(chv_rela) e me diga se deu certo. Aqui pra mim deu certo !

Eu acho que com IF !EMPTY(chv_rela) dando certo, você nem vai precisr do uso do KEYBOARD CHR(30)+CHR(31), se concordar até pode tirar fora.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Convertendo Sistema do GASPRO para Harbour

Mensagem por Alexandre Silva »

Pablo César escreveu:Eu acho que com IF !EMPTY(chv_rela) dando certo, você nem vai precisr do uso do KEYBOARD CHR(30)+CHR(31), se concordar até pode tirar fora.
Ok, mas isso sempre vai ser TRUE, mesmo quando andar com a seta para direita ou esquerda, que nesse caso, nao deveria atualizar, só quando mudasse a chave...mas pra mim já ta bom..
e o problema do J, da pra resolver como vc fez, nao deixando atualiazr se nao tem itens..
Nao é bonito, mas funciona..

Interessante seria ver porque esse comportamento no Harbour, já que no clipper funcionava e a funcao é a mesma..
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Convertendo Sistema do GASPRO para Harbour

Mensagem por Pablo César »

Interessante mesmo seria vocÊ fazer as suas próprias rotinas. Daí você manda no seu código, não que tem que fazer de acordo uma linha de pensamento que não seja a sua. Ao final de contas é você quem vai dar manutenção, não é ? Mas fico feliz que eu tenha te ajudado em algo, pena pela gambiarra... rsrs mas o tópico ainda está aberto à novas mensagens. O ruim é ter tempo para entender e ir direto ao ponto.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Convertendo Sistema do GASPRO para Harbour

Mensagem por Jairo Maia »

Olá Alexandre,

Primeiramente, Meus Parabéns a Pablo César.

Porém, o problema é que o código foi escrito para ser compilado em Clipper, e ai está a diferença.

Considere sempre que estou falando do seu arquivo ROM_FUNC.PRG.

Na Função MOSTRA_RELA, vc tem o seguinte na linha 520:
IF chv_1 != &chv_rela .OR. !br_outro:stable

O Problema é que em clipper, esta mesma situação retorna .F., enquanto Harbour retorna .T.
Assim, a condição do clipper não é atendida pelo Harbour. Necessita adaptar. Não sei o motivo ainda pq essa diferença acontece no Harbour.

Na função BRWFUNC, abaixo da linha 596, acrescente a seguinte linha:

Código: Selecionar todos

If ( Type( "br_outro" ) = "O" , br_outro:stable:=!br_outro:stable , Nil )
Vc pode apenas alterar na função MOSTRA_RELA, removendo o "!", mas por alguma razão, eu não faria esta alteração lá. Porém, vc decide.

Para resolver o problema dos zeros na consulta vazia, vc precisa fazer outra alteração para ter o mesmo efeito em clipper, que é fazer o refresh na consulta.

No final da função, antes da linha ENDD, acrescente o seguinte:

Código: Selecionar todos

If Type( "br_outro" ) = "O" .And. LastKey() = K_UP .Or. LastKey() = K_DOWN
     br_w:refreshall()
     ForcaBrw(.f.)
Endi
Sendo assim, vc tem que ter em mente que toda vez que gerar os fontes do projeto, estas alterações se farão necessárias, e neste momento não acredito que isto possa mudar. Ou seja, temos que entender que existem diferenças entre Clipper e Harbour.

Porém, como vc mesmo citou existem muitos mais prós que contra, e também não vejo a menor possibilidade de voltar em Clipper.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder