Impressão etiqueta Argox saindo apenas 1 caracter o que fazer?
17/10/2012
9
Boa tarde, estou desenvolvendo uma etiqueta para um cliente, porem estou com um problema que não estou conseguindo resolver.
Para imprimir a etiqueta estou utilizando a dll "WINPPLA.dll", utilizando os seguintes métodos da dll, a impressora utilizada pelo cliente é a "MODELO - ALLEGRO FLEX 6.0"
A configuração da etiqueta estou fazendo da seguinte forma:
Porem o que ocorre é o seguinte, a etiqueta é impressa mas para cada comando "Prn_Text" está sendo impresso apenas um caracter por comando, onde deveria ser impresso (10, 20, 30, 40, 50) está sendo impresso (1,2, 3, 4, 5), onde deveria ser impresso ("PR-00000-00000-0" e "GRANULADO XXXXXXW") está sendo impresso ("P", "G"), e assim por diante...
Alguém sabe me dizer o que está errado, ou o que preciso fazer para que todo o conteúdo de cada comando "Prn_Text" seja impresso?
Fico no aguardo, desde já agrade.
Para imprimir a etiqueta estou utilizando a dll "WINPPLA.dll", utilizando os seguintes métodos da dll, a impressora utilizada pelo cliente é a "MODELO - ALLEGRO FLEX 6.0"
function CreatePrn (selection:integer;FileName:pchar):integer;stdcall;external 'WINPPLA.DLL'; Procedure ClosePrn ();stdcall;external 'WINPPLA.DLL'; function Get_Graphic ( x,y,mem_mode:integer;format:char;filename:pchar):integer;stdcall;external 'WINPPLA.DLL'; function Print_Out (width,height,copies,amount:integer):integer;stdcall;external 'WINPPLA.DLL'; function Prn_Text (x,y,ori,font,typee,hor_factor,ver_factor:integer;mode:char;numeric:integer;data:pchar):integer;stdcall;external 'WINPPLA.DLL'; function Prn_Barcode (x, y, ori :Integer; type1:char; narrow:Integer; width,height:Integer; mode:char; numeric:Integer; data:pchar):Integer;stdcall;external 'WINPPLA.DLL'; function Set_Darkness (darkness:integer):integer;stdcall;external 'WINPPLA.DLL';
A configuração da etiqueta estou fazendo da seguinte forma:
CreatePrn(1, 'ppla.txt'); Set_Darkness(20); //Prn_Text( X, Y, ori, font, typee, hor_factor, ver_factor, mode, numeric, data) Prn_Text( 20, 106, 1, 9, 6, 0, 0, 'n', 2, '10' )); Prn_Text( 65, 106, 1, 9, 6, 0, 0, 'n', 2, '20' )); Prn_Text(110, 106, 1, 9, 6, 0, 0, 'n', 2, '30' )); Prn_Text(155, 106, 1, 9, 6, 0, 0, 'n', 2, '40' )); Prn_Text(200, 106, 1, 9, 6, 0, 0, 'n', 2, '50' )); Prn_Text(255, 134, 1, 9, 3, 0, 0, 'n', 2, 'PR-00000-00000-0' )); Prn_Text(255, 111, 1, 9, 2, 0, 0, 'n', 2, 'GRANULADO XXXXXXW')); Prn_Text( 15, 95, 1, 9, 2, 0, 0, 'n', 2, 'LINHA COMPOSICAO MMMMMMMMMMMMW MMMMMMMMW MMMMMMMMW' )); Prn_Text( 15, 83, 1, 9, 2, 0, 0, 'n', 2, 'FORMULA PRODUCAO 4 + 5 MMMMMMW MMMMMMMMW MMMMMMMMW' )); Prn_Text( 15, 71, 1, 9, 2, 0, 0, 'n', 2, 'FORMULA ADITIVO MMMMMMMMMMMMMW MMMMMMMMW MMMMMMMMW' )); Prn_Text( 15, 58, 1, 9, 2, 0, 0, 'n', 2, 'FERTILIZANTE MINERAL SIMPLES W MMMMMMMMW MMMMMMMMW' )); Prn_Text( 15, 47, 1, 9, 2, 0, 0, 'n', 2, 'PESO LIQUIDO 50,00 kg MMMMMMMW MMMMMMMMW MMMMMMMMW' )); Prn_Text( 15, 19, 1, 9, 4, 0, 0, 'n', 2, 'OP123456' )); Prn_Text(135, 19, 1, 9, 4, 0, 0, 'n', 2, '098,765' )); Prn_Text(215, 19, 1, 9, 3, 0, 0, 'n', 2, '05/12/1997' )); Prn_Text(305, 19, 1, 9, 3, 0, 0, 'n', 2, '31/12/2013' )); Print_Out(1, 1, 1, 1); ClosePrn;
Porem o que ocorre é o seguinte, a etiqueta é impressa mas para cada comando "Prn_Text" está sendo impresso apenas um caracter por comando, onde deveria ser impresso (10, 20, 30, 40, 50) está sendo impresso (1,2, 3, 4, 5), onde deveria ser impresso ("PR-00000-00000-0" e "GRANULADO XXXXXXW") está sendo impresso ("P", "G"), e assim por diante...
Alguém sabe me dizer o que está errado, ou o que preciso fazer para que todo o conteúdo de cada comando "Prn_Text" seja impresso?
Fico no aguardo, desde já agrade.

Felype Prado
Curtir tópico
+ 0
Responder
Posts
23/10/2012
Felype Prado
O problema descrito só irá ocorrer na versão Delphi XE2, pois teve uma alteração entre PChar e PAnsiChar.
Para solucionar o problema basta trocar toda declaração de PChar para PAnsiChar. Depois que descobrimos o problema a solução é tão simples...
Na descrição onde está sendo definido o valor que será impresso não está sendo passado como PAnsiChar, mas fiz um cast de todos os valores para PAnsiChar, tanto na declaração dos métodos como na utilização.
Para solucionar o problema basta trocar toda declaração de PChar para PAnsiChar. Depois que descobrimos o problema a solução é tão simples...
Na descrição onde está sendo definido o valor que será impresso não está sendo passado como PAnsiChar, mas fiz um cast de todos os valores para PAnsiChar, tanto na declaração dos métodos como na utilização.
Responder
Clique aqui para fazer login e interagir na Comunidade :)