Set device to printer

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

Moderador: Moderadores

microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Set device to printer

Mensagem 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!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Set device to printer

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Set device to printer

Mensagem 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:
erro setdevice.jpg
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"...
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem 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?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Set device to printer

Mensagem 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!

Código: Selecionar todos

cARQ = "ARQUIVO.PRN"
SET PRINTER TO "&cARQ"
Boa sorte!
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Set device to printer

Mensagem 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:
prn2 tela1.jpg
prn2 tela2.jpg
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?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem 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.
Anexos
winprn.zip
Programa teste
(580.93 KiB) Baixado 85 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Set device to printer

Mensagem 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?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem por asimoes »

Mais uma informação:

ERRO: DOS ERROR 3
DESCRIÇÃO: Caminho não encontrado
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem por asimoes »

Prezado, é para criar manualmente a pasta D:\TEMP ou o pequeno aplicativo a criará sozinho?
Você tem que criar.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem por asimoes »

Se o teu sistema é console, acredito não ser necessário o include hmg.ch
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Set device to printer

Mensagem 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ô :P 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!!!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Set device to printer

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder