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

17/10/2012

4

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar