Só imprime quando sai do sistema

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Só imprime quando sai do sistema

Mensagem por Paulo Pereira »

Ola
Num cliente que tenho, rede windows, servidor server 2003,
sistema em clipper 5.2e, compilado com blinker
o sistema só imprime, na LPT1 ou gera arquivo apenas quando o usuario sai do sistema.imaginem o inconveniente...
porque isso ?

O comando é o classico
set device to print
set print to LPT1
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Só imprime quando sai do sistema

Mensagem por alxsts »

Olá!

Você está fechando o arquivo de impressão? Após a última linha impressa, emita os comandos:

Código: Selecionar todos

EJECT
SET PRINTER TO
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Só imprime quando sai do sistema

Mensagem por Eolo »

Só precisa do SET PRINTER TO pra "terminar" a impressão.
O EJECT, só se for necessário ejetar o papel.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Só imprime quando sai do sistema

Mensagem por Clipper »

Prezado Colega

Outra mudança que resolve o problema é modificar no registro do Windows.

Entre no editor de registro do Windows - REGEDIT
Procure pelo valor LPT_TIMEOUT
Mude o dado do valor de 15 para 1

Continue a busca com F3 e vá alterando até que chegue ao final do registro.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Só imprime quando sai do sistema

Mensagem por Paulo Pereira »

Obrigado a todos
o set printer to , resolveu..
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á

Só imprime quando sai do sistema

Mensagem por Pablo César »

Paulo Pereira escreveu:o set printer to , resolveu..
Mas aconselho também a executar a indicação do Marcelo para ajustar o LPT_TIMEOUT.
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
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Só imprime quando sai do sistema

Mensagem por Eolo »

O TIMEOUT também funciona, mas é necessário apenas se o programa em DOS não tiver um comando para "avisar" ao SO que o trabalho de impressão terminou. Só que o Clipper tem esse comando, e ele é o SET PRINTER TO.

Quando uma linguagem NÃO tem um comando como este (ou ele é omitido), aí entra o TIMEOUT, ou seja: como o WIndows não sabe se um determinado trabalho de impressão já acabou, ele fica esperando o tempo definido em TIMEOUT. Passado esse tempo, nada acontecendo, ele "assume" que a coisa terminou e inicia a impressão.

Porque a impressão só é iniciada quando se sai do programa? Bem, quando o programa é terminado, todos os respectivos handles são fechados pelo Windows, incluindo o da porta da impressora (é exatamente o que o SET PRINTER TO faz), aí o Windows sabe que o trabalho de impressão foi terminado e inicia a impressão imediatamente.

Fonte: http://www.printfil.com/article/slow-do ... indows.htm. Está em inglês mas é só usar um tradutor.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Só imprime quando sai do sistema

Mensagem por Clipper »

Trocando em miúdos significa que...

Se tem o fonte. Use o SET PRINTER TO

Se não tiver. Altere o LPT_TIMEOUT

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Só imprime quando sai do sistema

Mensagem por Eolo »

O Paulo Pereira não mencionou "falta dos fontes", então o SET PRINTER TO é a resposta ao problema levantado no post.
Aliás, foi o que ele aplicou. E funcionou.
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á

Só imprime quando sai do sistema

Mensagem por Pablo César »

Sim, já sabemos, aliás desde o começo já desconfiávamos que o problema estava em fechar o relatório. Mas como disse eu anteriormente, "também" seria conveniente acertar o TIMEOUT, justamente para outros casos. Mas que seja algo tão relevante. Por isso, eu sou sempre a favor de criar arquivo de impressão antes, salvo em algumas situações que preciso imprimir em modo gráfico. Mas como estamos na seção Clipper, deduzimos que não é o caso...
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
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Só imprime quando sai do sistema

Mensagem por Eolo »

Mas como disse eu anteriormente, "também" seria conveniente acertar o TIMEOUT, justamente para outros casos. Mas que seja algo tão relevante.
Pablo, desculpe, mas a pergunta do Paulo Pereira foi específica, então a resposta não deveria ser na mesma linha, pra não virar desvio de assunto? Ele não colocou o SET PRINTER TO (porque não sabia), tava dando problema, agora ele colocou e tá resolvido, então o que são esses "outros casos"? Alterar o registro do ruindows pra "outros casos"? Desculpe, não entendi porque "seria conveniente também acertar o Timeout" para o Paulo Pereira.

O Alexandre Santos, lá no começo, já matou o problema. Exceto pelo EJECT a mais... :-)
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á

Só imprime quando sai do sistema

Mensagem por Pablo César »

Do jeito que está se abordando este assunto do TIME OUT, sim está sendo desvio de assunto. Porque estaríamos aprofundando no assunto. Eu apenas complementei que seria interessante, não para esse caso em que ele não estava imprimindo. Eu apenas quis complementar para outros casos em que muitos dos programadores em Clipper ainda imprimem diretamente à impressora, aliás a porta paralela da impressora. Aí sim a questão de reduzir o tempo do TIME OUT se justificaria. Então, o conselho não foi somente pro Paulo e sim para todos aqueles que ainda imprimem direto, não como neste caso do Paulo que está direcionando a saída de impressão para arquivo.
Lembra quando imprimíamos no Win98, não demorava quase nada para começar a sair a impressão... bem quando saiu o XP já notava-se a demora.
Alterar o registro do ruindows pra "outros casos"?
Sim, por quê não ? Alterar o registro do Windows é muitas vezes necessário. Aqui no fórum foram abordado muitas vezes essa questão da demora na impressão e com respeito ao acesso de dbfs. Eu até disponibilizei um utilitário que altera o registro nesses pontos, considerando vários tópico que indicavam a prática. Um deles é do mestre Rochinha. Veja aqui para download:
https://pctoledo.org/forum/fileba ... t=s&page=1
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
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Só imprime quando sai do sistema

Mensagem por Eolo »

Ah, agora ficou perfeitamente claro.
É que eu não tinha atentado ao título do post, "Só imprime quando sai do sistema".
Agora entendi.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Só imprime quando sai do sistema

Mensagem por Clipper »

Prezados Colegas

Eu complementei a resposta foi pensando nos futuros colegas que poderão vir a precisar, talvez alguns deles não tenham os fontes ou mesmo nos casos que se tenha os fontes mas eles não estejam disponíveis no momento. Sendo assim o post fica mais completo e serve para ambos os casos. Além é claro de enriquecer didaticamente o fórum e os colegas.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Só imprime quando sai do sistema

Mensagem por Eolo »

Marcelo Clipper, desculpe se me expressei mal, entendo a sua atitude e a respeito, mas meu ponto é o seguinte: o Paulo Pereira foi específico em sua pergunta, então porque não dar a resposta específica?

O título do post é "Só imprime quando sai do sistema", então qual a resposta específica do Clipper pra isso? O Alexandre Alxsts sacou o problema e sugeriu a resposta certa, matou a pau: SET PRINTER TO (exceção ao EJECT a mais). Tanto que resolveu o problema do Paulo Pereira. Fim.

A sugestão que vc deu, embora de alguma forma também resolva o problema, pode levar a crer que o Clipper não tem resposta apropriada pro problema e a saída é mexer no registro do Windows. Será que o Paulo Pereira e outros não poderiam ser induzidos a achar que essa sua sugestão era também necessária, em conjunto ou como alternativa ao SET PRINTER TO? Na minha experiência, não é. Eu nunca mexi no registro do Windows em nenhum cliente. Imagina numa rede com algumas dezenas de PCs, vc ter que mexer no registro de todos eles só porque faltou (ou não) o SET PRINTER TO...

Se amanhã um outro colega entrar no post e dizer que não tem os fontes pra incluir o SET PRINTER TO, aí sim eu concordo que caberia uma intervenção como a que vc fez.

É isso. Desculpe novamente se me expressei mal. Abraço!
Responder