Impressão etiqueta Argox saindo apenas 1 caracter o que fazer?

17/10/2012

3

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"

    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.
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.
Responder