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:
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"...

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!

Código: Selecionar todos

cARQ = "ARQUIVO.PRN"
SET PRINTER TO "&cARQ"
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:
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?

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ô :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!!!

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.