Erro Compilação Harbour utilitário ADAP GASPRO

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

Moderador: Moderadores

Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por Toledo »

marcelomteles escreveu:Aproveitando, alguns relatórios eram configurados para fonte condensada e estão saindo com tamanho desconfigurado
Amigo, procure no arquivo GASP40HB.PRG a função imprime_hb(), no início desta função, troque:

Código: Selecionar todos

Local aDrvp_:={{drvpcom,17},{drvpc20,20},{drvpeli,12},{drvpexp,5},{drvpenf,.T.},{drvpde8,.T.},{CHR(27)+'4',.T.},{CHR(27)+'5',.T.}}
Local aDrvt_:={{drvtcom,17},{drvtc20,20},{drvteli,12},{drvtexp,5},{drvtenf,.F.},{drvtde8,.F.},{CHR(27)+'4',.F.},{CHR(27)+'5',.F.}}
por:

Código: Selecionar todos

Local aDrvp_:={{&drvpcom.,17},{&drvpc20.,20},{&drvpeli.,12},{&drvpexp.,5},{&drvpenf.,.T.},{&drvpde8.,.T.},{CHR(27)+'4',.T.},{CHR(27)+'5',.T.}}
Local aDrvt_:={{&drvtcom.,17},{&drvtc20.,20},{&drvteli.,12},{&drvtexp.,5},{&drvtenf.,.F.},{&drvtde8.,.F.},{CHR(27)+'4',.F.},{CHR(27)+'5',.F.}}
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
prmuller
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 11 Nov 2008 12:25
Localização: Vila Velha - ES

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por prmuller »

Toledo ; Marcelo, bom dia!

Eu não sabia que a conversão efetuada pelo gas4harbour era tão abrangente. Se já achava o utilitário maravilhoso, agora, muito mais.
Mas, a finalidade do fórum foi cumprida e o problema colocado pelo Marcelo, resolvido.
No meu caso, como os arquivos FUNC, FUN2 e PROC contém muitas rotinas que eu mesmo alterei, pra evitar ter que refazê-los toda vez ra que tinha que gerar fontes novamente ( o Gas os gera a cada processo,) optei por uma solução caseira, mas, que funciona.
Quanto aos relatórios condensados saírem com caracteres padrão, tb não é normal. Pode estar ligado aos caracteres de controle da impressora que é usada. Teríamos que pesquisar a respeito. Acho que seria interessante o Marcelo postar uma amostra do código onde está ocorrendo o fato para ver se podemos ajudar pois, acredito, solução existe.

Sds,
Paulo Muller
prmuller
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 11 Nov 2008 12:25
Localização: Vila Velha - ES

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por prmuller »

Opa, desculpem, não tinha visto o post anterior do Toledo sobre a condensação de caracteres.
Sds,
Paulo Muller
marcelomteles
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 12 Dez 2013 01:46
Localização: são bernardo do campo

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por marcelomteles »

Toledo bom dia,

Ainda não testei a indicação acima, mas creio que dará certo, como todas as outras dicas, mais uma vez obrigado.

Esta alteração em compilar os sistemas para Harbour, irá sem sombra de dúvida me dar mais tempo de sobrevivencia dos meus sistemas compilados em clipper. Eu que já estava vendo meus sistemas "morrerem" em virtude de novos sistemas operacionais que não são compativeis com 16 bits.

Mas estou certo de que preciso migrá-los para uma linguagem visual, pois é sempre um questionamento e pedido dos clientes.
Peço a sugestão, indicação e dicas de vocês que com mais experiência e já tendo talvez passado por esta etapa, possa contribuir para que eu possa iniciar este caminho. Sei que as alterações de sintaxe, estrutura de codigo e maneira de programar são inevitáveis, mas gostaria de experimentar algo que minimizasse o possivel estas alterações.

Abraços.

Obrigado.


Marcelo
Marcelo
Harbour 3.2.0
prmuller
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 11 Nov 2008 12:25
Localização: Vila Velha - ES

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por prmuller »

Marcelo, bom dia!

Recebi seu email, via fórum, sobre a emissão dos relatórios após a inclusão.
Segue, abaixo, as correções necessárias, com um exemplo de código já modificado. Basta que vc procure no arquivo que chama o relatório o processo XXX_REL(ult_reg) e efetuar as correções, conforme comentado no exemplo.
Postei a resposta aqui no fórum pq é o canal correto de diálogo até que se encerre o tópico. Não que eu tenha nada contra o contato direto. Pode contatar-me à vontade (prmuller@gmail.com) mas, pode ser útil para outros na mesma situação e, não acho que seja necessário ter algum tipo de constrangimento para se solicitar ajuda, ao contrária, é graças à boa vontade de pessoas como o Toledo que podemos sair de situações complicadas. Eu mesmo, apos as colocações do mestre, reutilizei o gas4harbour e pude aposentar um monte de soluções caseiras, leia-se gambiarras, que tinha efetuado, rssss.
Vamos lá então ao codigo:

Código: Selecionar todos

PROC ASS_REL(ult_reg)  // imprime relatorio apos inclusao
LOCAL p_imp:=.t., i_ok:=.f., imp_rel:=.f.
DO WHIL .t.
 SAVE SCREEN                     // salva a tela

 #ifdef COM_REDE
//  tps=TP_SAIDA(,,.t.)                              // essa linha sai
  titrel:=fil_ini:=""                                // essa linha entra
  tps:=1                                             // essa linha entra
  tps=opcoes_rel(lin_menu,col_menu,5,11,fil_ini)     // essa linha entra
  IF LASTKEY()=K_ESC
   EXIT
  ENDI
//  i_ok=(tps=2 .OR. PREPIMP("CADASTRO DE ASSOCIADOS"))    // essa linha sai
//  IF i_ok                                                // essa linha sai
   CRT_R002(tps,0,ult_reg)                           // mude pelo nome do seu relatorio
   imp_rel=.t.
//  ENDI                                                 // essa linha sai
 #else
  i_ok=PREPIMP("LANCAMENTOS NO CAIXA")
  IF i_ok
   CRT_R002(0,0,ult_reg)
   imp_rel=.t.
  ENDI
 #endi

 REST SCREEN                    // restaura tela
 IF imp_rel                     // imprimiu algo?
  msg="Prosseguir|Outra c¢pia"
  op_=DBOX(msg,,,E_MENU,,"FIM DE IMPRESSŽO") // quer emitir outra copia?
  IF op_=2
   LOOP                         // nao quer...
  ENDI
 ENDI
 EXIT
ENDD
RETU
Finalizando, acredito que vc vá ter o mesmo problema se quizer imprimir um relatorio direto do vídeo. Se precisar, peça que mando as correções e, não se esqueça de postar o retorno deste post, ok?

Sucesso!
Paulo Muller
Editado pela última vez por Toledo em 10 Jun 2015 10:06, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
marcelomteles
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 12 Dez 2013 01:46
Localização: são bernardo do campo

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por marcelomteles »

Paulo boa tarde,

Acrescentei o código conforme sua instrução do último post e realmente as impressoras começaram a ser disponibilizadas também nos relatório após impressão, porém após estas alterações esta aparecendo um erro imediatamente após a confirmação da impressão, impedindo seu início.

Anexo envio o print da tela com o erro e abaixo o código da PROC no arquivo XXX_REL(ult_reg) após as alterações, verifique se não errei nada.

Por favor me ajude.
Anexos
ULT_REG.PRG
(725 Bytes) Baixado 201 vezes
erro.jpg
Marcelo
Harbour 3.2.0
prmuller
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 11 Nov 2008 12:25
Localização: Vila Velha - ES

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por prmuller »

Marcelo, bom dia!
Vamos corrigir o erro. Por favor, me informe em qual linha esta ocorrendo (caminho/trace). A proncípio, é na variável tps.
Aguardo retorno.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por Toledo »

Marcelo, uma outra opção para teste:

Código: Selecionar todos

PROC NOV_REL(ult_reg)  // imprime relatorio apos inclusao
LOCAL p_imp:=.t., i_ok:=.f., imp_rel:=.f.
LOCAL aPrinters := WIN_PRINTERLIST()
for i=1 to len(aPrinters)
  IF aPrinters[i] == WIN_PRINTERGETDEFAULT()
   drvprn:=i
   exit
  ENDIF
next
drvporta:=drvdbf+"TMP"+ide_maq
DO WHIL .t.
 SAVE SCREEN                     // salva a tela

 #ifdef COM_REDE
  tps=TP_SAIDAHB(,,.t.,aPrinters)
  IF LASTKEY()=K_ESC
   EXIT
  ENDI
  i_ok=(tps=2 .OR. PREPIMP("NOVA GUIA"))
  IF i_ok
   TES_R001(tps,0,ult_reg)
   imp_rel=.t.
  ENDI
 #else
  i_ok=PREPIMP("NOVA GUIA")
  IF i_ok
   TES_R001(0,0,ult_reg)
   imp_rel=.t.
  ENDI
 #endi

 REST SCREEN                    // restaura tela
 IF imp_rel                     // imprimiu algo?
  msg="Prosseguir|Outra c¢pia"
  op_=DBOX(msg,,,E_MENU,,"FIM DE IMPRESSŽO") // quer emitir outra copia?
  IF op_=2
   LOOP                         // nao quer...
  ENDI
 ENDI
 EXIT
ENDD
RETU
Conforme exemplo acima, no código original gerado pelo GASPRO40, incluir as linhas 3 a 10 e alterar a linha 15.

Não tenho como testar, mas acho que vai dar certo.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
prmuller
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 11 Nov 2008 12:25
Localização: Vila Velha - ES

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por prmuller »

Marcelo, bom dia!

Tanto o código postado pelo Toledo como o que eu postei funcionam perfeitamente, sem erro algum o que me leva a deduzir que o erro por você reportado (=) está no próprio código do relatório e não na função que o chama.
Caso vc ainda não tenha resolvido, poste o código do relatório para analisarmos, ok?

Sds,
Paulo Muller
marcelomteles
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 12 Dez 2013 01:46
Localização: são bernardo do campo

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por marcelomteles »

Toledo / Paulo boa noite,

A sugestão do Toledo resolveu o problema, agora a impressão é concluída sem erros.

Paulo a sua sugestão acredito que também é funcional, talvez eu possa ter invertido ou trocado alguma linha, mas mesmo assim esta também salva como uma opção em minhas bibliotecas de ajuda que obtenho aqui no forum.

A impressão em impressoras USB funcionaram, só que em uma foi impresso três ou quatro caracteres especiais no início do relatório e em outra impressora esta saltando uma pagina antes do inicio da impressão.
Será que terei que criar um ajuste para cada impressora ? Tem alguma maneira para resolver as duas questões acima.

Abraços e mais uma vez obrigado pela ajuda.

Marcelo
Marcelo
Harbour 3.2.0
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por Toledo »

marcelomteles escreveu:só que em uma foi impresso três ou quatro caracteres especiais no início do relatório
Provavelmente deve ser algum comando CHR() que é usado no relatório.
marcelomteles escreveu:em outra impressora esta saltando uma pagina antes do inicio da impressão
Bom, sem ver o código fonte deste relatório vai ficar difícil tentar ajudar.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
marcelomteles
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 12 Dez 2013 01:46
Localização: são bernardo do campo

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por marcelomteles »

Toledo bom dia,

Segue anexo o PRG. É um relatório gerado direto pelo Gas, não me recordo de ter feito nenhuma alteração manual nele a não ser dentro do próprio gaspro.

Abraços,

Marcelo
Anexos
SPS_R033.PRG
(5.63 KiB) Baixado 203 vezes
Marcelo
Harbour 3.2.0
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por Itamar M. Lins Jr. »

Ola!
Boas práticas de programação.
Sabemos que esse código é velho, mas convém lembrar que para melhorar o entendimento use:
1) Para fazer uma comparação, == ou =
2) Para fazer uma atribuição, :=
3) Usar todo o nome da função, por exemplo no seu código tem subs,tran,ejec, recn(),... é melhor usar substr(), transform(), eject, recno()...

Esta linha aqui por exemplo:

Código: Selecionar todos

DO WHIL !EOF().AND.(!so_um_reg.OR.imp_reg=RECN()).AND.POE_GAUGE()
Esta atribuindo ou comparando ?
Se usar:

Código: Selecionar todos

DO WHIL !EOF().AND.(!so_um_reg.OR.imp_reg==RECN()).AND.POE_GAUGE()
Saberemos que é uma comparação.
Esta linhas aqui, estão imprimindo os tais caracteres estranhos.

Código: Selecionar todos

IMPCTL(lpp_040)                                    // seta pagina com 40 linhas
IMPCTL(drvpc20)
IF tps=2
 IMPCTL("' '+CHR(8)")
ENDI
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por Toledo »

Itamar M. Lins Jr. escreveu:Esta linhas aqui, estão imprimindo os tais caracteres estranhos.
É exatamente isto, na conversão do GASPRO para Harbour não existe nenhum tratamento para tamanho de página (linhas por folha - variável drvtapg). Então resta saber se na impressora que você vai imprimir este relatório o tamanho do papel vai fazer alguma diferença.

Para teste, você poderia fazer o seguinte:

- No código deste relatório, procure pela linha:

Código: Selecionar todos

dele_atu:=SET(_SET_DELETED,.t.)
Na linha seguinte, incluir:

Código: Selecionar todos

aPrn := WIN_PRINTERLIST( .T., .F. )
if LEFT(UPPER(aPrn[drvprn,2]),3)!="LPT"
  lpp_040:=lpp_066 :=""
endif
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
marcelomteles
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 12 Dez 2013 01:46
Localização: são bernardo do campo

Erro Compilação Harbour utilitário ADAP GASPRO

Mensagem por marcelomteles »

Pessoal boa tarde,

Todas as ajudas foram válidas e fizeram efeito, a impressão esta saindo corretamente agora.

Apenas em único relatório que é impresso diretamente após a incusão, utilizo um formulário (papel) já pronto do cliente, no qual preciso encaixar alguns campos em suas respectivas posições.
Confesso que não esta sendo fácil, pois este posicionamento não esta sendo possível. Se puxo para cima o campo sai fora, se abaixo também sai fora do local.

Decidimos então verificar se é possível utilizarmos algum utilitário ou via harbour mesmo, pois agora o aplicativo já esta convertido e com isto fazermos a impressão do formulario junto com os campos, tipo algum utilitário gráfico que eu conseguisse posicionar o formulário e os campos e a impressão saisse tudo de uma vez (formulário e campos).

Lembro que já vi alguma coisa parecida aqui no forum, mas não consegui localizar na pesquisa.

Não sei se soube me expressar corretamente, mas aguardo a contribuição.

Abraços

Marcelo
Marcelo
Harbour 3.2.0
Responder