Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2006
federicorl federicorl is offline
Miembro
 
Registrado: may 2006
Posts: 31
Poder: 0
federicorl Va por buen camino
Red face comandos de impresion

en otro hilo hemos estado tratando de hacer el manejo de las secuencias de escape de las impresoras, yo trabajo con la tm-t90 de epson y ya encontre el comando para cortar el papel es #27 +#105
y me funciono definiendolo como un constante como se ve abajo

const pNewLn = #10 +#13; // Salto de linea
pCuton = #27 +#105; //Corte #27 +#105

begin
PWrite(pNewLn );
PWrite(pNewLn );
PWrite(' hola como estas');
PWrite(pNewLn );
PWrite(pNewLn );
PWrite(' Preparando Prueba de Corte');
PWrite(pNewLn );
PWrite(pCuton);
end;

lo que ahora quiero es poder manejarlo como una variable que en un campo se capture esta secuencia y se ejecute, pero no funciona asi con uan variable, asi:

const
pNewLn = #10 +#13; // Salto de linea
Var
Varcut :String;
Begin

Varcut := edit1.Text;
PWrite(' Preparando Prueba de Corte');
PWrite(pNewLn );
PWrite(Varcut);

la impresora me imprime el comando en vez de ejecutarlo, alguien podria decirme porque y como lo soluciono, el procedimiento es el que se publico en otro hilo y la presento a continuacion:

Procedure TForm1.PWrite(s:String);
var PT :Integer;
P :Pchar;
Begin
PT := FileOpen('lpt1',fmOpenWrite ); // Abrimos la impresora como un archivo
P := PChar( s ); //convertimos la cadena a un PChar
FileWrite(PT,P^,length( s )); //escribimos a la impresora
FileClose(PT);//cerrar el archivo de la impresora
end;

de antemano gracias por su tiempo y disculpen si la pregunta es muy tonta
Responder Con Cita
  #2  
Antiguo 07-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por federicorl
Varcut := edit1.Text;
Edit1.text ¿que contiene?. Supongo que la secuencia de caracteres #27#105, pero como metes esos caracteres en el edit, con una sentencia como esta:

Código Delphi [-]
Edit1.text:= #27#105;

O lo escribes directamente en el edit. Porque puede que no estés introduciendo lo que piensas. Para comprobarlo utiliza algo como esto para saber exactamente que caracteres son:

Código Delphi [-]
ShowMessage('#'+IntToStr(Byte(Edit1.text[1]))+',#'+IntToStr(Byte(Edit1.text[2])));
Responder Con Cita
  #3  
Antiguo 07-09-2006
federicorl federicorl is offline
Miembro
 
Registrado: may 2006
Posts: 31
Poder: 0
federicorl Va por buen camino
si, estoy tecleando en el Edit

si obiamente estoy introducuiendo en el EDIT #27 +#105, el problema es cuando llamo, no lo ejecuta mas bien lo imprime
Responder Con Cita
  #4  
Antiguo 07-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Sigo dándole vueltas al asunto, en el edit ¿estas introduciendo la cadena de texto '#27+#105'?, es decir la cadena de texto tal cual. Porque así el resultado es una cadena de 8 caracteres y no los 2 que tu necesitas para hacer el corte. Se me ocurre lo siguiente para que puedas introducir los caracteres especiales como el 27:

Código Delphi [-]
function Decode(Str: string): string;
var
  i: integer;
begin
  Result:= '';
  while Length(Str) > 0 do
  begin
    if Copy(Str, 1, 1) = '%' then
    begin
      if not TryStrToInt('$' + Copy(Str, 2, 2),i) then
      begin
        Result:= '';
        Exit;
      end;
      Result:= Result + Char(i);
      Delete(Str, 1, 2);
    end else Result:= Result + Copy(Str, 1, 1);
    Delete(Str,1,1);
  end;
end;


var
  s: string;
begin
  s:= Decode(Edit1.text);
  PWrite(s);
end;

De este modo, por ejemplo, si queremos imprimir esto:
Código:
Hola mundo
(Cortar)
Escribiriamos en el edit

Código:
Hola mundo%0A%0D%1B%69
Es decir sustituimos los caracteres problematicos por un '%' seguido del codigo correspondiente en hexadecimal. Espero que te sirva.
Responder Con Cita
  #5  
Antiguo 07-09-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
edit2.text:=Pnewln;

Esto si te funcionará, lo que estás haciendo como te dice Seoane es:
'#10#13'

y en realidad lo que tiene que contener son los códigos de alimentación de línea: 10 y retorno de carro 13.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
Respuesta



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
messenger por comandos Cosgaya Varios 0 01-02-2006 12:58:17
Limitacion con Interbase y PHP en los comandos SQL ronalg PHP 0 31-07-2005 17:01:30
shell para comandos del dos sarga API de Windows 1 16-04-2004 03:55:33
Ejecutar comandos del DOS? Carlos Arevalo Varios 3 12-11-2003 07:50:41
reconocer todos los comandos de SQL M@rcos SQL 3 30-06-2003 12:20:02


La franja horaria es GMT +2. Ahora son las 12:37:05.


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