Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2017
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 162
Poder: 15
hgiacobone Va por buen camino
Question Enviar TXT como etiqueta ZEBRA con Delphi XE...

Hola. Aqui llego con un tema algo raro.
Hemos mudado el codigo del viejo Delphi-7 hacia un Delphi-XE4 y, entre otras, la funcion de impresion sobre impresoras Zebra no ha funcionado nunca más.

Digamos, no produce ninguna salida. Aqui parte del código que es "standard" en varios foros:
Código Delphi [-]
function Write_RAW_StringToPrinter(PrinterName:String; comando:String): Boolean;
var
   PrinterHandle: THandle;
   N: DWORD;
   DocInfo1: TDocInfo1;
begin
  if not WinSpool.OpenPrinter(PChar( PrinterName ), PrinterHandle, nil)
   then raise exception.create(PrinterName+#13+'OpenPrinter error ' + IntToStr(GetLastError));

  Try
      with DocInfo1 do
      begin
        pDocName := PChar('Keuken Doc');
        pOutputFile := nil;
        pDataType := 'RAW';
      end;
      if StartDocPrinter(PrinterHandle, 1, @DocInfo1) <> 0  then
      begin
          StartPagePrinter(PrinterHandle) ;
////// EN ESTE PUNTO PARECE NO REALIZAR NADA, NI TAMPOCO DA ERROR ///////////
          WritePrinter(PrinterHandle, PChar(comando) , Length( PChar(comando) ), N);
     end;
Lo mismo en Delphi-7 anda perfecto.
Lo mismo en XE4, compilado en 32 bits o en 64bits no anda...
¿Alguna idea o sugerencia con esto?
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·

Última edición por hgiacobone fecha: 15-06-2017 a las 21:41:43. Razón: no me gustaba
Responder Con Cita
  #2  
Antiguo 16-06-2017
Avatar de _Leo
_Leo _Leo is offline
Miembro
 
Registrado: ene 2017
Ubicación: Lanzarote (Islas Canarias)
Posts: 24
Poder: 0
_Leo Va camino a la fama
Hola, aunque Delphi no es lo mío, a ver si te funciona así:
Código Delphi [-]
function Write_RAW_StringToPrinter(PrinterName:String; comando:AnsiString): Boolean;
var
  PrinterHandle: THandle;
  N: DWORD;
  DocInfo1: TDocInfo1;
begin
  Result := False;
  if not WinApi.WinSpool.OpenPrinter(PChar(PrinterName), PrinterHandle, nil)
    then raise exception.create(PrinterName+#13+'OpenPrinter error ' + IntToStr(GetLastError));

  with DocInfo1 do
  begin
    pDocName := PChar('Keuken Doc');
    pOutputFile := nil;
    pDataType := 'RAW';
  end;
  if StartDocPrinter(PrinterHandle, 1, @DocInfo1) <> 0  then
  begin
    StartPagePrinter(PrinterHandle) ;
    WritePrinter(PrinterHandle, PAnsiChar(comando), Length(comando), N);
    EndPagePrinter(PrinterHandle);
    EndDocPrinter(PrinterHandle);
    ClosePrinter(PrinterHandle);
    Result := True;
  end;
end;
Responder Con Cita
  #3  
Antiguo 16-06-2017
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 162
Poder: 15
hgiacobone Va por buen camino
Thumbs up Tema Solucionado

Bueno amigos, luego de mucho andar, he aqui la solución.
La instrucción original, debe modificarse de esta forma:

Código Delphi [-]
function Write_RAW_StringToPrinter(PrinterName:String; comando:String): Boolean;
var
   PrinterHandle: THandle;
   N: DWORD;
   DocInfo1: TDocInfo1;
begin
  if not WinSpool.OpenPrinter(PAnsiChar( PrinterName ), PrinterHandle, nil)
   then raise exception.create(PrinterName+#13+'OpenPrinter error ' + IntToStr(GetLastError));

  Try
      with DocInfo1 do
      begin
        pDocName := PWideChar('Mi nombre es Yako');
        pOutputFile := nil;
        pDataType := PWideChar('RAW');
      end;
      if StartDocPrinter(PrinterHandle, 1, @DocInfo1) <> 0  then
      begin
          StartPagePrinter(PrinterHandle) ;
          WritePrinter(PrinterHandle , PAnsiChar( RawByteString(comando) ) , Length(comando) , N);
     end;

...y asi recibe la cantidad de Bytes correctos.
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como imprimir tags RFID en impresora Zebra ZR400 gmarquez Impresión 0 19-10-2015 18:34:42
Etiqueta vacia VS etiqueta con datos ainhara123 Impresión 9 28-08-2013 21:21:53
impresora zebra con windows 7 y delphi Oscar Guzmán Impresión 6 24-09-2012 08:46:23
Alguien sabe como se configura impresora Zebra MZ 320? mamcx Varios 0 08-02-2010 18:30:17
Etiqueta vB [delphi] vtdeleon Varios 12 04-04-2005 18:26:36


La franja horaria es GMT +2. Ahora son las 18:29:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi