Página 5 de 7
Set device to printer
Enviado: 01 Dez 2015 14:09
por microvolution
asimoes escreveu:
Faz o seguinte, usa a função hb_DirBase()+Cli
prezado professor, coloco em que momento da programação?
- no momento do public CLI (antes ou depois)
- no momento do primeiro SET PRINTER TO &CLI (antes ou depois)
- no momento do type/del (antes ou depois)

vlw!
Set device to printer
Enviado: 01 Dez 2015 18:43
por JoséQuintas
Vai ver o Windows viu SICCA, e pensou que era o zica vírus... rs
Está com vários problemas, e não apenas um.
Não adianta querer resolver tudo de uma vez que não dá, e não existe solução mágica.
1) Arquivo temporário e excesso de macro
2) Impressora texto e impressora gráfica não são a mesma coisa
3) Porta LPT e porta USB não é o que define a forma de imprimir, e sim a impressora.
1) Arquivo temporário
confira se o nome está certo.
Confira qual é a pasta atual.
Confira se tem direito de gravação na pasta.
Não sabe como fazer isso?
Vai lá no fonte, antes de imprimir, e coloca pra mostrar na tela.
Pode usar tudo que conhece pra isso.
Código: Selecionar todos
CLS
@ 2, 0 SAY "O nome de arquivo que vai ser usado é:"
@ 3, 0 SAY CLI + ".prn"
@ 4, 0 SAY "A pasta atual é:"
@ 5, 0 SAY CurDir()
Inkey(0)
MemoWrite( "testa.bat", "DIR /p " + Chr(13) + Chr(10) + "PAUSE" + Chr(13) + Chr(13) )
RUN ( "testa.bat" )
SET PRINTER TO ( cli + ".PRN" )
...
Começa por esse básico.
Set device to printer
Enviado: 01 Dez 2015 19:33
por microvolution
ANDRIL escreveu:Lembre-se de tar direito a "TODOS" os usuários para esta pasta que está no disco D:
prezado já tentei de quase tudo, inclusive de criar o usuário TODOS nesta e nas suas SUB-PASTAS com direitos de ler/gravar/editar.
Bom, alguém me passou, e não sei mais quem foi de V.Sas. (me desculpe pela falta de atenção) o seguinte código apenas para teste:
Código: Selecionar todos
func main()
cArqPrint := 'd:\temp\arquivo.prn'
SET CONSOLE OFF
SET DEVICE TO PRINT
[i][b]SET PRINTER TO &cArqPrint.[/b][/i]
SET PRINT ON
? Time()
SET PRINT OFF
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON
retu nil
recompilei-o usando a HMG 3.0.35 e ao executar apareceu a seguinte tela de erro na linha destacada acima:
Bom, o que o prezado (disse)
JoséQuintas escreveu:Vai ver o Windows viu SICCA, e pensou que era o zica vírus... rs
de repente é mesmo...
só pra lembrar, executei esse PRN1.EXE (nome que dei para o PRN1.PRG e seu executável) na unidade de boot (lembrando que uso dual boot: win 10 64 bit c/ possibilidade de win xp 32 bit) do win 10 (c:\mvinfo\hb32\exemplos\setdevice), bem como na raíz das unidades D:\ e E:\, só pra ter certeza que não foi interferência dos windows.
Também, desativei o Windows Defender e todas as funções do Comodo FireWall.
Bom, por enquanto, vou tentar o teste do prezado professor "JQuintas"...
Set device to printer
Enviado: 01 Dez 2015 19:56
por asimoes
Eu passei o código para você testar.
Modifica só uma coisa, troca a extensão .prn para .txt, tô desconficado que o windows 10 não está gostando desta extensão.
Ou é uma variação maluca do zica virus.

)
Só uma coisa a pasta d:\temp existe?
Set device to printer
Enviado: 01 Dez 2015 19:59
por ANDRIL
Faz um teste pelo prompt, crie um arquivo na sua pasta do sistema e depois use o COPY ou XCOPY do próprio sistema operacional para fazer a cópia para a pasta que esta tentando pelo seu sistema, veja se da erro de permissão ou caminho não encontrado, que é o que esta acontecendo no seu código. É como se não entendesse que D:\TEMP\ARQUIVO.PRN é arquivo e sim um diretório que obviamente não existe. Se o teste apresentar problema já sabe que deve verificar seu Windows, se não der erro, é problema na sua programação.
Tente tirar o "." que usa para término da macro. Coloque a extensão já embutida na macro como eu lhe disse acima. Faz o teste desse jeito e ve se também ocorre o problema. Tente também mudar a extensão do arquivo para "TXT", quando se direcionada uma comando DOS exemplo TYPE usando > PRN o sistema operacional criar um arquivo interno PRN pode ser que esteja ai o conflito. Nessa altura, já estou atirando para todos os lados, rs!
Boa sorte!
Set device to printer
Enviado: 01 Dez 2015 20:04
por microvolution
JoséQuintas escreveu:1) Arquivo temporário
Prezado professor JQuintas e demais, testei seu código e foi bastante útil e interessante pra que a gente (juntos) descubra o que está acontecendo.
Antes fiz algumas mudanças para que o mesmo funcionasse na HMG 3.0.35 (não quis testá-lo com a HMG 3.0.46 e 3.4.0 por enquanto), vejam:
Código: Selecionar todos
func main()
#include <hmg.ch>
CLS
CLI :='TESTE'
@ 2, 0 SAY "O nome de arquivo que vai ser usado é:"
@ 3, 0 SAY CLI + ".prn"
@ 4, 0 SAY "A pasta atual é:"
@ 5, 0 SAY CurDir()
Inkey(0)
MemoWrit( "testa.bat", "DIR /p " + Chr(13) + Chr(10) + "PAUSE" + Chr(13) + Chr(13) )
RUN ( "testa.bat" )
SET PRINTER TO ( cli + ".PRN" )
retu nil
O resultado foi surpreendente, gerando 2, telas, conforme abaixo, vejam por favor:
Bom, não, ótimo, pelo exemplo aqui, deu pra perceber que há alguma coisa (código) no meu APLICATIVO Sicca que impede a criação do conteúdo da variável &CLI, pois aqui neste pequeno exemplo, ele criou até um arquivo TESTA.BAT com os comandos:
DIR/P e
PAUSE (além dos chr).
Criou também um arquivo de nome TESTE.PRN em branco, o qual, acredito que está em branco, pois não criamos nenhum @ prow ou pcol para que gravasse nele.
Então, prezados, o que pode ser ou estar acontecendo no meu aplicativo que exatamente no WINDOWS 10 não cria o conteúdo da variável
"CLI"?
O QUE ME DEIXA DESCONFORTÁVEL - no meu pouco conhecimento, é, que deveria aparecer algum tipo de mensagem de erro quando o SET PRINTER TO &CLI..PRN fosse acionado e o arquivo não pudesse ser gravado...
que coisa não?
Set device to printer
Enviado: 01 Dez 2015 20:09
por asimoes
Fiz um teste aqui, repetindo a minha máquina é windows 10, antivirus avast
Eu criei a pasta d:\temp
Compilei o programa abaixo, executou e criou o arquivo teste.prn
Grande mistério!
Faz um teste pra gente, desabilita o seu antivirus pra ver o que acontece.
Código: Selecionar todos
FUNCTION MAIN()
cArqPrint:="D:\temp\teste.prn"
SET CONSOLE OFF
SET DEVICE TO PRINT
SET PRINTER TO &cArqPrint.
SET PRINT ON
@ 0, 0 SAY Time()
DesligaImp()
RETURN Nil
Set device to printer
Enviado: 01 Dez 2015 20:17
por asimoes
Vamos verificar se é u problema da vsersão hmg/harbour que você tem.
Estou anexando um exe compactado para você testar, este executável foi compilado com harbour 3.4
Ele cria o arquivo teste.prn na pasta d:\temp
Veja o post anterior.
Set device to printer
Enviado: 01 Dez 2015 20:22
por microvolution
asimoes escreveu:Eu criei a pasta d:\temp
Prezado, é para criar manualmente a pasta D:\TEMP ou o pequeno aplicativo a criará sozinho?
Set device to printer
Enviado: 01 Dez 2015 20:23
por asimoes
Mais uma informação:
ERRO: DOS ERROR 3
DESCRIÇÃO: Caminho não encontrado
Set device to printer
Enviado: 01 Dez 2015 20:24
por asimoes
Prezado, é para criar manualmente a pasta D:\TEMP ou o pequeno aplicativo a criará sozinho?
Você tem que criar.
Set device to printer
Enviado: 01 Dez 2015 20:26
por asimoes
Vamos lá:
1-Cria a pasta D:\TEMP
2-Baixa o programa que eu postei acima
3-Descompacta o zip
4-Executa o programa
5-Verifica a pasta D:\TEMP se não der erro.
Set device to printer
Enviado: 01 Dez 2015 20:28
por asimoes
Se o teu sistema é console, acredito não ser necessário o include hmg.ch
Set device to printer
Enviado: 01 Dez 2015 20:34
por microvolution
gente, como disse um dos companheiros logo acima, "nesta altura do campeonato estamos dando tiro para tudo quanto é lado"...
até eu mesmo, já nem sei mais o que estou fazendo... como diz o provérbio popular:
"ONCOTÔ, DONCOVIM, PRONCOVÔ"... kkkk
Bom, fiz a criação manual da pasta D:\TEMP e executei novamente o aplicativozinho e infelizmente, ele gerou o arquivo: "ARQUIVO.PRN" dentra da pasta D:\TEMP com o conteúdo de uma hora atual:
20:23:45...
eu disse infelizmente, pois isso prova que o problema está no meu código, aqui no win 10...
já tô

doidin... doidin... doidin...
bom, vamos fazer mais um teste com o que o prezado professor "asimoes" pediu com o WinPrn...
vou testar e postar o resultado...
enquanto isso... na bate clipperna, alguém tente descobrir o que pode ter no meu código que está impedindo a criação do conteúdo da variável &CLI..PRN, aliás, para desencargo de consciência mais uma vez, eliminei todas as macros da &CLI..PRN e apenas deixei CLI.PRN pois é só pra teste...
Ah!, vou testar também, mudando de CLI.PRN para CLI.TXT como vários já me pediram por diversas vezes e isso ainda não o fiz... nessa altura do campeonato... qualquer tentativa é lucro!!!
ufa!!!
Set device to printer
Enviado: 01 Dez 2015 20:49
por asimoes
Deve ter algum problema nesta versão do harbour 3.2 que você tem.
Outra coisa, quanto ao include hmg.ch remove ele do teu teste e veja se algo acontece.