Página 2 de 3

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 08 Jun 2015 22:14
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,

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 09 Jun 2015 08:01
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

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 09 Jun 2015 08:06
por prmuller
Opa, desculpem, não tinha visto o post anterior do Toledo sobre a condensação de caracteres.
Sds,
Paulo Muller

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 09 Jun 2015 10:59
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

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 10 Jun 2015 08:48
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

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 12 Jun 2015 15:22
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.

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 14 Jun 2015 06:48
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.

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 14 Jun 2015 09:12
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,

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 15 Jun 2015 09:45
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

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 15 Jun 2015 23:31
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

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 16 Jun 2015 08:16
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,

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 16 Jun 2015 12:30
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

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 16 Jun 2015 16:49
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.

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 16 Jun 2015 17:36
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,

Erro Compilação Harbour utilitário ADAP GASPRO

Enviado: 23 Jun 2015 14:24
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