Alexandre Prz Postado Janeiro 16, 2016 Denunciar Share Postado Janeiro 16, 2016 O título quase diz tudo... tenho um código de impressão e também um arquivo de config.ini Gostaria de saber como faço para ler o comando ESC/POS que está salvo como texto no .ini e usar ele no meu código, qual conversão usar ?! Exemplo esse comando: WriteLn(Impressora, chr($1B) + '+' + '0' + chr($05) + chr($02) + '1'+buscaitem.FieldByName('nome').AsString); Imprime o texto a seguir dele em formato grande, mas se eu salvo esse comando no .ini e faço a leitura dele e mudo o código para : WriteLn(Impressora, txtgrande+buscaitem.FieldByName('nome').AsString); Ele imprime o código como string normal... ainda estou a procura de qual conversão usar para realizar tal tarefa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 16, 2016 Denunciar Share Postado Janeiro 16, 2016 Ler Arquivos .INI exemplos no link https://www.google.com.br/webhp?sourceid=chrome-instant&rlz=1C1RLNS_pt-BRBR672BR672&ion=1&espv=2&ie=UTF-8#q=ler+arquivo+ini+delphi Este é um exemplo de como imprimir direto para impressora: procedure TForm1.Button1Click(Sender: TObject); var F : TextFile; i : integer; begin AssignFile(F,'LPT1'); Rewrite(F); i := 0; Writeln(F,'Teste de impressao - Linha 0'); Writeln(F,'Teste de impressao - Linha 1'); Writeln(F,#27#15+'Teste de Impressão - Linha 2'); Writeln(F,'Teste de impressao - Linha 3'); Writeln(F,#27#18+'Teste de Impressão - Linha 4'); Writeln(F,'Teste de impressao - Linha 5'); Writeln(F,#12); // Ejeta a página CloseFile(F); end; OBS: faça um loop para ler um arquivo ini e vá colocando os comandos lidos, dentro dos comandos Writeln abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 Obrigado pela resposta Sir. Jhonas, mas talvez você não tenha entendido minha questão... O que eu quero é armazenar um comando ESC/POS dentro de um arquivo de configuração .ini e ler esse comando para usa-lo durante a impressão. Armazenar o comando e ler, não é o problema, o problema está na hora de usa-lo dentro da linha de impressão WriteLn. O comando WriteLn envia ele como uma string normal, e não como comando ESC/POS, assim na hora da impressão ele imprime como se fosse apenas uma mera String. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 17, 2016 Denunciar Share Postado Janeiro 17, 2016 coloque como está os comandos dentro do arquivo ini Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 Estou colocando no mesmo formato. ex: chr($1B) + '+' + '0' + chr($05) + chr($02) + '1' ou #27 + #119 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 17, 2016 Denunciar Share Postado Janeiro 17, 2016 o seu primeiro exemplo sera colocado como string e não comandos de impressão teria que ser como no segundo exemplo me passe alguns comandos ( 2º exemplo ) e farei alguns testes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 (editado) Na impressora que um dos clientes possui, que é Diebold, o comando dessa forma: WriteLn(Impressora, chr($1B) + '+' + '0' + chr($05) + chr($02) + '1'+buscaitem.FieldByName('nome').AsString); Imprime da forma que eu quero, com o texto a seguir grande ( expandido ). Só que agora um outro cliente possui Bematech, e o código da bematech para executar o mesmo efeito de texto é diferente. O que estou pretendendo fazer é salvar o comando que faz a impressão nesse formato em um .ini, realizar a leitura e passar para um variável. Então em vez de colocar diretamente : WriteLn(Impressora, chr($1B) + '+' + '0' + chr($05) + chr($02) + '1'+buscaitem.FieldByName('nome').AsString); colocaria por exemplo WriteLn(Impressora, comandolidoini+buscaitem.FieldByName('nome').AsString); Ai o problema é que, salvando o comando no arquivo .ini e lendo como String, em vez da impressora ler como comando ESC, ela ler como string normal, ou seja, imprime ele por extenso... Não estou acertando nessa conversão... A solução que estou a usar no momento, é de já guardar todos os comandos em constantes e ler do .ini apenas o modelo da Impressora e baseado no modelo, ele usa o seu respectivo comando. Editado Janeiro 17, 2016 por Alexandre Prz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 17, 2016 Denunciar Share Postado Janeiro 17, 2016 só para tirar a duvida .... essas impressoras são matriciais ou não ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 Não Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 17, 2016 Denunciar Share Postado Janeiro 17, 2016 são impressoras fiscais ? ou lazer ? ou jato de tinta, ou termal ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 (editado) Todas impressoras não fiscais, uma é Diebold TSP143MU e outra Bematech 4200 TH *TERMICAS Editado Janeiro 17, 2016 por Alexandre Prz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 17, 2016 Denunciar Share Postado Janeiro 17, 2016 Name WriteLn Procedure Syntax procedure WriteLn(Expr:Width:Precision; ...); procedure WriteLn(var F: TextFile; Expr:Width:Precision; ...); Description WriteLn is just like the Write procedure, except it prints a line ending after printing its arguments. A line ending is a carriage return followed by a line feed (#13#10). With no arguments, or only a TextFile argument, WriteLn prints only a line ending. ----------------------------------------------------------------------------------------------------------------------------------------- pelo que deu para entender, se voce colocar o comando diretamente, ele executa corretamente e se colocar em uma variavel não ... é isso ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 Exato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 17, 2016 Denunciar Share Postado Janeiro 17, 2016 tente isso WriteLn(Impressora,Pchar(comandolidoini)+buscaitem.FieldByName('nome').AsString); caso não funcione, vou dar uma verificada e te dou uma resposta depois... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 Já tinha tentado desta forma, ele imprime várias interrogações. hehe Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 17, 2016 Denunciar Share Postado Janeiro 17, 2016 ok, vou dar uma pesquisada... mas de qualquer forma, vou te passar projetos prontos para as impressoras Diebold e Bematech ... de uma olhada, talvez ajude a resolver o problema de outra maneira http://sourceforge.net/p/printerplugin/svn/9/ abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alexandre Prz Postado Janeiro 17, 2016 Autor Denunciar Share Postado Janeiro 17, 2016 Na verdade eu até já resolvi o problema de outra maneira, mas estou insatisfeito, de qualquer forma obrigado pela força. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Alexandre Prz
O título quase diz tudo... tenho um código de impressão e também um arquivo de config.ini
Gostaria de saber como faço para ler o comando ESC/POS que está salvo como texto no .ini e usar ele no meu código, qual conversão usar ?!
Exemplo esse comando:
WriteLn(Impressora, chr($1B) + '+' + '0' + chr($05) + chr($02) + '1'+buscaitem.FieldByName('nome').AsString);
Imprime o texto a seguir dele em formato grande, mas se eu salvo esse comando no .ini e faço a leitura dele e mudo o código para :
WriteLn(Impressora, txtgrande+buscaitem.FieldByName('nome').AsString);
Ele imprime o código como string normal... ainda estou a procura de qual conversão usar para realizar tal tarefa.
Link para o comentário
Compartilhar em outros sites
16 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.