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: 1234
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: 20416
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 1234
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: 1309
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: 1234
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 89 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: 1234
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: 1234
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