Convertendo Sistema do GASPRO para Harbour
Moderador: Moderadores
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Re: Ver erros na compilacao/Save to
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.
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)
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)
- Alexandre Silva
- 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
1-
2-
3-
Só me resta esperar...
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..sygecom escreveu:Outra coisa: me parece que ela neutraliza a funcionalidade do mouse. O mouse em sua aplicação está funcionando?
2-
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.Jairo Maia escreveu:foi gerado por uma versão anterior do gas, a 3.1.
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
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Ver erros na compilacao/Save to
Olá Alexandre,
Sem mostrar o problema fica difícil de lhe ajudar...boa sorte.
Sem mostrar o problema fica difícil de lhe ajudar...boa sorte.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Alexandre Silva
- Usuário Nível 3

- Mensagens: 376
- Registrado em: 26 Mar 2007 00:16
- Localização: Itapema - SC
Convertendo Sistema do GASPRO para Harbour
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
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
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
- Alexandre Silva
- Usuário Nível 3

- Mensagens: 376
- Registrado em: 26 Mar 2007 00:16
- Localização: Itapema - SC
Convertendo Sistema do GASPRO para Harbour
Parte 2
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Convertendo Sistema do GASPRO para Harbour
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.
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.
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Convertendo Sistema do GASPRO para Harbour
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:

Vou seguir procurando e ver se consigo fazer que as teclas de navegação tenha incidência no segundo browse.
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.
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Convertendo Sistema do GASPRO para Harbour
No arquivo ROM_FUNC.PRG parece que vocÊ modificou algo que no Clipper funcionava.

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.
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.
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.
- Alexandre Silva
- Usuário Nível 3

- Mensagens: 376
- Registrado em: 26 Mar 2007 00:16
- Localização: Itapema - SC
Convertendo Sistema do GASPRO para Harbour
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-
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
2-
Ai que tá, nao foi mudificado, se voce compilar com a LiB do gas, quando passar por essa rotina,Pablo César escreveu:Você poderia mostrar como estava antes ? Por quê modificou ?
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Convertendo Sistema do GASPRO para Harbour
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 ??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
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: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
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.
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.
- Alexandre Silva
- Usuário Nível 3

- Mensagens: 376
- Registrado em: 26 Mar 2007 00:16
- Localização: Itapema - SC
Convertendo Sistema do GASPRO para Harbour
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Convertendo Sistema do GASPRO para Harbour
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".atualiza quando vai pra o browse debaixo..mas quando volta também..joga no final
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.
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.
- Alexandre Silva
- Usuário Nível 3

- Mensagens: 376
- Registrado em: 26 Mar 2007 00:16
- Localização: Itapema - SC
Convertendo Sistema do GASPRO para Harbour
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..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.
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Convertendo Sistema do GASPRO para Harbour
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.
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.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Convertendo Sistema do GASPRO para Harbour
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:
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:
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.
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 )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.)
EndiPoré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)
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)