Set device to printer

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

Moderador: Moderadores

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 »

Mostra pra gente o conteúdo dos arquivos que geram o executável.

A bat, o hbp o hbc se existir e hbm se existir

Outra coisa é usar uma versão do harbour 3.2 que não seja da hmg o ideal seria uma versão mais atualizada.
►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: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.
prezado "asimoes" funcionou perfeitamente o seu e também o meu, já que eu criei manualmente a pasta D:\TEMP...

Como disse anteriormente e volto a repetir, alguma coisa está acontecendo no momento da criação do SET PRINTER TO CLI.TXT (era &CLI..PRN e modifiquei só pra desencargo de consciência) pois o mesmo erro acontece, conforme a mesma imagem, só que um novo PrintScrren atualizado:
15-1201 - imagem erro win 10.jpg
Bom, sinceramente, vejam o todo o conteúdo da função EMISSAO_RECIBO (na íntegra):

Código: Selecionar todos

static function EMISSAO_RECIBO ()
     public ext1, ext2

     * CONFIG_IMPRESSORA ()

//?'dentro da funcao EMISSAO_RECIBO 1' // LINHAS Q COLOQUEI SÓ PRA DESCOBRIR PQ NÃO IMPRIMIA 28/2/14W
//wait // LINHAS Q COLOQUEI SÓ PRA DESCOBRIR PQ NÃO IMPRIMIA 28/2/14W
     do while (lastkey () <> K_ESC .and. .not. isprinter ())
          if .not. CONFIRMA ('A impressora est  pronta')
               * Abandona o programa
               keyboard chr (K_ESC)
               inkey ()
               exit
          endif
     enddo
//?'dentro da funcao EMISSAO_RECIBO 2' // LINHAS Q COLOQUEI SÓ PRA DESCOBRIR PQ NÃO IMPRIMIA 28/2/14W
//wait // LINHAS Q COLOQUEI SÓ PRA DESCOBRIR PQ NÃO IMPRIMIA 28/2/14W

     if lastkey () <> K_ESC
//?'dentro da funcao EMISSAO_RECIBO 3 dentro do <> K_ESC' // LINHAS Q COLOQUEI SÓ PRA DESCOBRIR PQ NÃO IMPRIMIA 28/2/14W
//wait // LINHAS Q COLOQUEI SÓ PRA DESCOBRIR PQ NÃO IMPRIMIA 28/2/14W

          public CLI             := strzero (mCDCLIENTE,4)
          public NOME_EMP        := left (ltrim(NOME_EMPRESA),34)
          public NOME_DO_CLIENTE := DCI10000->NMCLIENTE
          public VALOR_REC       := right( transform (mVR_RECEBI,pVR_RECEBI),6 )
          public DATA_PAGA       := dtoc (mDT_PAGTO)
          public NU_PRESTA       := padr (trim (mNUTITULO) + ' ',11)
          extenso (mVR_RECEBI,55,55,.t.,,,.f.)
          EXTENSO1        := padr (ext1,55)
          EXTENSO2        := padr (ext2,55)
?'LINHA 1991'
WAIT

          set device to printer
//          set printer to lpt1 
	   // set printer to &CLI..PRN ADDITIVE
	   // set printer to CLI.PRN ADDITIVE
	   set printer to CLI.TXT ADDITIVE
	  // set printer to &DIR.\TEMP\&CLI..PRN ADDITIVE
          * set printer to rec.txt
          * @ prow(),pcol() say chr (27) + chr (15)

          if DCI10999->TP_RECIBO=1
               if mCDCLIENTE <> aCDCLI
                    if mQT_RECIBO > 1
                         @ prow()+1,00 say '|                                                       |'
                         @ prow()+1,00 say '|  Data : &DATA_PAGA                                    |'
                         @ prow()+1,00 say '|                    ---------------------------------- |'
                         @ prow()+1,00 say '|  C¢d. : &CLI       &NOME_EMP |'
                         @ prow()+1,00 say '+-------------------------------------------------------+'
                         *@ prow()+1,00 say ' '

                         * @ prow()+14,00 say '  '
                         @ prow()+0,11 say 'Valor Total dos Recibos : ' +;
                         transform (mVT_RECIBO,pVR_RECEBI)
                         mVT_RECIBO := 0
                         @ prow()+16,00 say ' '
                    elseif aCDCLI <> 0
                         @ prow()+17,00 say ' '
                    endif
                    *aCDCLI := mCDCLIENTE
                    mQT_RECIBO := 0
               endif
               if mCDCLIENTE <> aCDCLI
                    @ prow(),pcol() say chr (27) + chr (33) + '5'   // Era '3' e mudei p/ '5' somente para teste. Walcledson 09/02/02.
                    @ prow()+1,1    say 'NÆo Vale Como Cupom Fiscal'
                    @ prow(),pcol() say chr (27) + 'W' + '0'
                    
                    @ prow()+1,00 say '+-------------------------------------------------------+'
                    @ prow()+1,00 say '|                                                       |'
                    @ prow()+1,00 say '|                      R E C I B O                      |'
                    @ prow()+1,00 say '|                      -----------                      |'
                    @ prow()+1,00 say '|                                                       |'
                    @ prow()+1,00 say '| Recebemos de &NOME_DO_CLIENTE |'
                    @ prow()+1,00 say '| a(s) seguinte(s) presta‡Æo(äes) ref.parte ou total:   |'
                    aCDCLI := mCDCLIENTE
               endif
               if N>1
                    @ prow()+1,00      say '|                                                       |'
                    @ prow()+0,L say  '&NU_PRESTA.->R$ &VALOR_REC.'
                    N--
               elseif N<2
                    L=+29
                    @ prow()+0,L say  '|    &NU_PRESTA.->R$ &VALOR_REC.'
                    if N<=1
                         N:=2
                         L:=2
                    endif
               endif
               mQT_RECIBO += 1
               mVT_RECIBO += mVR_RECEBI
               mQT_RECIBO += 1
               mVT_RECIBO += mVR_RECEBI
          endif
          RESET_IMPRESSORA ()
     endif
return
Mas, amados, diante do código acima, no pouco conhecimento que tenho o problema está no seguinte trecho:

Código: Selecionar todos

          set device to printer
//          set printer to lpt1 
	   // set printer to &CLI..PRN ADDITIVE
	   // set printer to CLI.PRN ADDITIVE
	   set printer to CLI.TXT ADDITIVE
	  // set printer to &DIR.\TEMP\&CLI..PRN ADDITIVE
          * set printer to rec.txt
          * @ prow(),pcol() say chr (27) + chr (15)
Pois o arquivo não está sendo gerado e não apresenta nenhuma mensagem de erro.

ALGUÉM dos companheiros professores sabe alguma rotina que verifica o "porquê" de não criar o arquivo CLI.TXT e também de não apresentar nenhuma mensagem, como o sistema apresenta na tela no momento do TYPE/DEL que ele não existe?
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 »

set printer to CLI.TXT ADDITIVE a clausula ADDITIVE não é necessária, pode suprimir.

depois do set printer to CLI.TXT falta um:

set print on

Sem o set print on nada vai acontecer.
►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:Mostra pra gente o conteúdo dos arquivos que geram o executável.
A bat, o hbp o hbc se existir e hbm se existir
seguem os arquivos da HMG:
HBC:

Código: Selecionar todos

incpaths=
libpaths=
libs=gtwvg gtwin
gt=gtwin
mt=no
instpaths=
HPB:

Código: Selecionar todos

pci10000.prg
dci10000.prg
dci10001.prg
dci10002.prg
enviarerro.prg
ext.prg
impresso.prg
pci10001.prg
pci10002.prg
pci10003.prg
pci10004.prg
pci10005.prg
pci10006.prg
pci10007.prg
pci10008.prg
pci10009.prg
pci10012.prg
pci10013.prg
pci10014.prg
pci10015.prg
pci10016.prg
pci10017.prg
pci10018.prg
pci10019.prg
pci10020.prg
pci10021.prg
pci10022.prg
pci10024.prg
pci10025.prg
pci10026.prg
pci10027.prg
pci10028.prg
pci10031.prg
pci10032.prg
pci10033.prg
pci10034.prg
pci10035.prg
pci10038.prg
pci10039.prg
pci10040.prg
pci10041.prg
pci10042.prg
pci10043.prg
pci10044.prg
pci10045.prg
pci10046.prg
pci10047.prg
pci10100.prg
pci10102.prg
pci10110.prg
pci10115.prg
pci10116.prg
pci10120.prg
pci10121.prg
pci10122.prg
pci10123.prg
pci10124.prg
pci10125.prg
pci10126.prg
pci10127.prg
pci10130.prg
pci10131.prg
pci10132.prg
pci10133.prg
pci10135.prg
pci10136.prg
pci10140.prg
pci10151.prg
pci10152.prg
pci10200.prg
pci10202.prg
pci10203.prg
pci10204.prg
pci10210.prg
pci10211.prg
pci10212.prg
pci10213.prg
pci10215.prg
pci10216.prg
pci10217.prg
pci10220.prg
pci10221.prg
pci10222.prg
pci10225.prg
pci10226.prg
pci10227.prg
pci10228.prg
pci10229.prg
pci10230.prg
pci10231.prg
pci10240.prg
pci10250.prg
pci10251.prg
pci10252.prg
pci10254.prg
pci10255.prg
pci10256.prg
pci10260.prg
pci10270.prg
pci10271.prg
pci10272.prg
pci10273.prg
pci10995.prg
pci10996.prg
pci10997.prg
pci10998.prg
pci10999.prg
pcterror.prg
pimpr105.prg
pimpr110.prg
pimpr115.prg
pimpr120.prg
pimpr121.prg
pimpr125.prg
pimpr130.prg
rci10000.prg
rimpr000.prg
rotinas5.prg
Bom, sao só estes arquivos que todos levam o mesmo nome do executável SiCCA.
Continuo dizendo, que acho (se soubesse não estaria pedindo ajuda, pelo contrário, estaria sentado do outro lado como os prezados professores, tentando ajudar algum companheiro), que o problema está nas linhas da minha postagem anterior.
Agora, deve ter uma maneira correta de se descobrir onde e porquê ocorre a "não criação" do arquivo que agora chama-se CLI.TXT.

Algum dos companheiros, sugeriu aqui a utilização do FCREATE e FERASE, bom, vou localizá-la aqui no post e tentar usá-la para criação do arquivo CLI.TXT, ok?
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 »

faz o teste:

Código: Selecionar todos

nHandle:=fCreate("CLI.PRN")
fSeek(nHandle, 0, 2)
fWrite(nHandle, Time()+hb_eol())
fClose(nHandle)
►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 »

Pensa no seguinte percival, o cara tá enrascado :%

Sugestão, a sua aplicação é console use outra versão do harbour 3.2 vamos te ajudando aqui a montar o hbp, hbc e hbm para compilar.

Pensa na proposta, vou subir uma versão já compilada para você testar.
►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 »

Só complementando o código do colega asimões:

Código: Selecionar todos

// esta linha tenta criar o arquivo
nHandle:=fCreate("D:\TEMP\CLI.TXT")
// se a abertura falhar retorna -1 nesse caso verificamos com a função Ferror()
if nHandle<0
? Ferror()
? DosError()
wait"veja aqui os codigos de erro"
else
fSeek(nHandle, 0, 2)
fWrite(nHandle, Time()+hb_eol())
fClose(nHandle)
endif

Tabela de DOSERROR(), retirado do Help do xHarbour
1 Invalid function number
2 File not found
3 Path not found
4 Too many open files (no handles left)
5 Access denied
6 Invalid handle
7 Memory control blocks destroyed
8 Insufficient memory
9 Invalid memory block address
10 Invalid environment
11 Invalid format
12 Invalid access code
13 Invalid data
15 Invalid drive was specified
16 Attempt to remove the current directory
17 Not same device
18 No more files
19 Attempt to write on write-protected media
20 Unknown unit
21 Drive not ready
22 Unknown command
23 Cyclic redundancy check (CRC) -- part of diskette is bad
24 Bad request structure length
25 Seek error
26 Unknown media type
27 Sector not found
28 Printer out of paper
29 Write fault
30 Read fault
31 General failure
32 Sharing violation
33 Lock violation
34 Invalid disk change
35 FCB unavailable
36 Sharing buffer overflow
38 Unable to complete the operation
50 Network request not supported
51 Remote computer not listening
52 Duplicate name on network
53 Network path not found
54 Network busy
55 Network device no longer exists
56 NETBIOS command limit exceeded
57 System error, NETBIOS error
58 Incorrect response from network
59 Unexpected network error
60 Incompatible remote adapter
61 Print queue full
62 Not enough space for print file
63 Print file was cancelled
64 Network name was denied
65 Access denied
66 Network device type incorrect
67 Network name not found
68 Network name limit exceeded
69 NETBIOS session limit exceeded
70 Sharing temporarily paused
71 Network request not accepted
72 Print or disk redirection is paused
80 File exists
82 Cannot make directory entry
83 Fail on INT 24
84 Too many redirections
85 Duplicate redirection
86 Invalid password
87 Invalid parameter
88 Network data fault
89 Function not supported by network
90 Required system component not installed
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
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 »

Segue link do hb 3.2 (core)

https://drive.google.com/file/d/0B0NmbC ... sp=sharing

Clicar no botão Download.

Descompacta em uma pasta por exemplo: c:\hb32core ou d:\hb32core
►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:set printer to CLI.TXT ADDITIVE a clausula ADDITIVE não é necessária, pode suprimir.
Prezado professor, o ADDITIVE é necessário sim, pois as impressões são repetidas por diversas vezes até o momento do pressionamento do "ESC", ou seja, o recibo só será concluído, quando não tiver mais nenhuma prestação para baixar. E sem esta cláusula, ele gera toda vez um novo conteúdo dentro do arquivo.

Bom, alguém também disse que não preciso da inclusão do "#INCLUDE "HMG.CH", bom, concordo em parte. Só que criei no meu sistema uma tela de erros gráfica, para que o usuário decida o que fazer, então, o aplicativo é meio que FLEX... comecei até mesmo a migrar para modo gráfico, mas, percebi que não vale a pena, pois se for pra começar de novo, é melhor usar uma IDE RAD que a EMBARCADERO oferece que é a RAD STUDIO onde se pode programar facilmente em DELPHI, C, C++, C#...

mas, isso é outra história... talvez num futuro próximo os autores da HMG consigam desenvolver uma IDE RAD semelhante à do DELPHI. De 2010 pra cá a HMG 3.0.35 já avançou muito para versão 3.4.x que já é UNICODE e com possibilidade imediata de compilar tanto em 32 quanto em 64 bits... estou muito contente, pois pensava que perderia tudo o que havia aprendido.

Mas, para isso acontecer, preciso resolver essas pequenas pendengas e em seguida, tentar uma legalização junto à SEF/SRE - MG para que talvez eu consiga mais clientes, pois se não for software FICAL está cada vez mais difícil conquistar os propensos clientes, principalmente, já que temos a desvantagem de estarmos em CONSOLE MODE.

BOM, isso foge completamente ao assunto...
vou ler agora o que os meus professores já me escreveram, enquanto V.Sas. leem o que acabo de escrever!
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!
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 »

Quanto ao PRINT ON, não fez diferença alguma... apresentou o mesmo erro no momento do TYPE/DEL.

Bom, vou tentar usar o FCREATE do professor
asimoes escreveu:faz o teste:
e depois farei o do outro professor... um momento por favor... usarei o teste dentro do meu próprio código, ok?
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!
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 »

Caros professores, enquanto os Srs. foram dormir, eu não poderia ir sem ter uma certeza: "ALGUMA MENSAGEM DE ERRO DEVERIA APRESENTAR" no momento da criação do SET PRINTER TO CLI.TXT (CLI.PRN ou mesmo usando a macro &CLI..PRN).

Então, comecei a fazer uns testes bobos que aprendi com nosso companheiro EOLO VENTURA há muitos anos atrás (e que está meio sumido daqui), que é colocar um próprio debugador do sistema, pois o debug do clipper nem o do harbour nunca aprendi a usar.
Os debugs que faço são, diversos:

Código: Selecionar todos

? "estou na linha tal" // seguido de um 
WAIT
Portanto assim, pude descobrir o erro, que lá no cliente funcionava (win 98x, win xp e win 7) com a criação do conteúdo da variável &CLI..PRN (no caso aqui "0001.PRN")e aqui não dava certo.

Bom, para que V.Sas. vejam o resultado, eis aqui abaixo 3 telas.
A primeira com o diretório do aplicativo com 2 arquivos em destaque. O "0001.PRN" e o "CLI.TXT":
15-1201 - sicca - pasta dos arquivos 0001 e CLI.jpg
A segunda, o conteúdo do 0001.PRN:
15-1201 - sicca conteúdo 0001.jpg
A terceira, o conteúdo do CLI.TXT:
15-1201 - sicca conteúdo CLI.jpg
Bom, meus amigos... agora que o arquivo já voltou ao normal, acho que é hora de partirmos para algum tipo de rotina em que capture este arquivo (caso não haja alguma impressora na porta LPT1) e envie para a USB, da mesma forma que o DOSPRN ou DOS2USB fazem.

Seria o PrintFillRaw a solução?
Como usá-lo?
Ou os prezados professores tem algo, dentro daquilo que todos nós sabemos que precisamos: simplicidade, praticidade e facilidade nas alterações do código fonte como o harbour veio;
pois quando estávamos no clipper a maior dificuldade que todos nós encontrávamos em trabalhar com ambiente windows era largar as linhas do CÓDIGO PROCEDURAL para aprender POO (PROGRAMAÇÃO ORIENTADA A OBJETO) e uma nova linguagem pois o tal CLIPPER FOR WINDOWS nunca saiu do papel até que a CA-CLIPPER fechou e deixou-nos viúvos.

Bom, então, preciso, como a maioria que está saindo do velho clipper e migrando para harbour é sair fora do SET PRINTER TO, ou mesmo que continue com ele, mas que o código permita:
- DECIDIR SE TEM impressora LPTx ou USB;
- SE TIVER AS 2, que ele priorize a LPTx pois entende-se que é uma matricial;
- SE TIVER somente USB, que seja como uma forma de captura como já disse semelhante ao DOSPRN ou DOS2USB, etc;
- SE TIVER apenas LPTx, que seja como já é através dos famosos ESC/P.

Bom, no mais, aguardo amanhã, a todos algo que nos ajude.
Mais uma vez, obrigado a todos, por enquanto, só tenho a agradecer!

Boa noite, ou melhor, pra quem já está dormindo, um bom dia ao amanhecer e ler!
Desde o nascer do sol, até o entardecer, louve ao Senhor (Criador de tudo e de todos)!
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!
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 »

o prezado asimoes escreveu:
hb_run ("type "+CLI+".PRN>prn")

Eu trocaria por

ImprimeRaw(Cli)
Bom, já que consegui fazer voltar tudo ao normal, "esse treco" IMPRIMERAW é uma função nativa ou de sua criação?
ela funciona de acordo com minha publicação anterior onde coloquei diversas perguntas?

vlw, por enquanto, mais uma vez é só!
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
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 »

Que bom, já consegue gerar o arquivo. Agora use a dica que passei acima que conseguirá imprimir em qualquer impressora mesma usando o comando TYPE com o Run. Eu uso harbour e continuo usando essa tática e funciona perfeitamente, quando tiver um tempo, vou refazer todo meu esquema de impressão em harbour, mais por enquanto consigo imprimir o que preciso onde quero.
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 »

Olá ANDRIL e demais companheiros bom dia a todos!
Andril, você se refere a esta dica da quarta página?
Ver codigo
1 cARQ=CLI+".PRN"
2 SET PRINTER TO "&cARQ" ADDITIVE

Como esta usando o TYPE para direcionar para a impressora, COMPARTILHE a impressora em REDE e tente o seguinte:

1 cPorta="\\PC\IMPRESSORA"
2 cComando="TYPE "+cARQ+" > "+cPorta
3 RUN "&cComando"
SE for esta, funciona mesmo sem ter fisicamente impressora matricial (lx 300/810) instalada?
Me ajude a entender melhor, ok?
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 »

A função ImprimeRaw eu já postei, que na verdade encapsula a WIN_PrintFileRaw

Segue função faça as alterações necessárias para seu sistema.

Código: Selecionar todos

FUNCTION ImprimeRaw(cArqImp, cPrinter)
LOCAL cMsg, nRet
      hb_Default(@cPrinter, WIN_PrinterGetDefault()) // atribui a impressora padrão.
      cMsg := ""
      nRet := WIN_PrintFileRaw(cPrinter, cArqImp,  'PRINTWIN')
      IF nRet < 0
         cMsg := 'Erro Imprimindo: '+Str(nRet)+' '
         SWITCH nRet
         CASE -1
            cMsg+="Parâmetros inválidos passados para função."  ; EXIT
         CASE -2
            cMsg+="WinAPI OpenPrinter() falha na chamada."      ; EXIT
         CASE -3 
            cMsg+="WinAPI StartDocPrinter() falha na chamada."  ; EXIT
         CASE -4
            cMsg+="WinAPI StartPagePrinter() falha na chamada." ; EXIT
         CASE -5
            cMsg+="WinAPI malloc() falha de memória."           ; EXIT
         CASE -6
            cMsg+="Arquivo " + cArqImp + " não localizado."     ; EXIT
         ENDSWITCH
         MsgStop(cMsg+hb_EOL()+'Informe este problema ao HelpDesk',  'Atenção')     
      ENDIF
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)
Responder