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 12-01-2011
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Thumbs down Prevenir error en la impresion y redireccionar

Estimado foro.

He leido algunos post sobre como evitar los errores de impresion, pero no he logrado buenos resultados.

Mi idea es "testear" de alguna manera el puerto lpt1, y si no esta conectado o la impresora no responde, avisarle al usuario y preguntarle si quiere grabar un archivo de texto con la impresion.

He utilizado el siguiente codigo

Código Delphi [-]
    AssignFile( Printer, 'LPT1' );
    FileMode := fmOpenReadWrite;
    {$I-} Reset( Printer ); {$I+}
    Rewrite( Printer );

pero se cuelga el programa en el rewrite si tengo la impresora apagada.

Cual seria la mejor manera para evitar este problema ??

Gracias a todos.

Saludos
Responder Con Cita
  #2  
Antiguo 12-01-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo trataría con un bloque try..except

Código Delphi [-]
    SePudoAbrir := True; {Inicializo esta variable booleana}
    AssignFile( Printer, 'LPT1' );
    FileMode := fmOpenReadWrite;
    try
       {Aqui trato de abrir la impresora}
       Reset( Printer );
       Rewrite( Printer );
    except
        {Si hay algun problema se va a meter en este bloque sino lo salta}
        SePudoAbrir := False;
        ShowMessage('La impresora no responde');
    end;
    {Si entro al bloque de excepcion SePudoAbrir sera False}
    if (SePudoAbrir) then
    begin
       ...
    end;

Si quieres mostrar el error:
Código Delphi [-]
    except
        {Si hay algun problema se va a meter en este bloque sino lo salta}
        on e:Exception do
        begin
           SePudoAbrir := False;
           ShowMessage('La impresora no responde'+#13+e.Message);
        end;
    end;
Responder Con Cita
  #3  
Antiguo 13-01-2011
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Exclamation

Amigo duilioisola.

He probado como me dijistes. He aqui mi codigo.

Código Delphi [-]
    lPrinterok := True;
    AssignFile( Printer, 'LPT1' );
    FileMode := fmOpenReadWrite;
    try
       {$I-} Reset( Printer ); {$I+}
       Rewrite( Printer );
    except
        on e:Exception do
        begin
           lPrinterok := False;
           ShowMessage('La impresora no responde'+#13+e.Message);
        end;
    end;

    if lPrinterok then
    begin
        Write( Printer, CHR(27) + CHR(64 ) );  <--  aqui se cuelga el programa
    end

no tengo ninguna impresora enganchada al puerto lpt1, es mas,
mi pc no tiene puerto, pero sin embargo la variable lPrinterok me da true.

Se agradece cualquier comentario.
Responder Con Cita
  #4  
Antiguo 13-01-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Pues trata de ver cual es el error que te da, metiendo el codigo que falla en un bloque try..except

Código Delphi [-]
    if lPrinterok then
    begin
        try
            Write( Printer, CHR(27) + CHR(64 ) );  <--  aqui se cuelga el programa
        except
            on e:exception do
                ShowMessage('Error al enviar a la impresora '+#13+e.Message)
        end;
    end

Si nos cuentas cual es el mensaje de error, quizás podamos ayudarte un poco más.

Cuando dices "se cuelga el programa", podemos pensar diferentes cosas:
- El ordenador se apaga.
- El ordenador se reinicia
- El programa se apaga
- El programa no responde y hay que cerrarlo a "patadas"
- El programa da un mensaje de error.
- El programa formatea mi disco C y genera una subida de tensión que quema el router y el switch.
Responder Con Cita
  #5  
Antiguo 02-02-2011
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Hola, recien he podido retomar este tema.

Sigo con el mismo problema, el programa se me cuelga, y lo debo cerrar forzosamente. He aqui el codigo.

Código Delphi [-]
    AssignFile( Printer, 'LPT1' );
    FileMode := fmOpenReadWrite;
    try
       {Aqui trato de abrir la impresora}
       {$I-} Reset( Printer ); {$I+}
       Rewrite( Printer );
       Write( Printer, CHR(27) + CHR(64 ) );   <--- aqui se tranca
    except
        {Si hay algun problema se va a meter en este bloque sino lo salta}
        on e:Exception do
        begin
           ShowMessage('La impresora no responde'+#13+e.Message);
        end;
    end;

Cualquier ayuda sera bienvenida.

Muchas gracias.

Saludos.

Leo
Responder Con Cita
  #6  
Antiguo 02-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Repito:
Cita:
Si nos cuentas cual es el mensaje de error, quizás podamos ayudarte un poco más.
Ya nos has dicho donde falla. Es en la linea write(Printer, ...);
Ok, pero ¿Cuál es el mensaje de error?
Se supone que en el centro de la pantalla debería salir una ventana que dice

-------------------------------------------------
La impresora no responde
Un texto, en inglés seguramente, que describe el problema.
-------------------------------------------------
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
redireccionar web angelp4492 Internet 3 22-01-2008 01:57:45
Código de verificación para prevenir envíos automáticos elcigarra PHP 2 04-05-2007 01:01:19
Cómo prevenir que se cierre??? Pandre Varios 5 11-02-2004 09:02:26
Prevenir la salida de la aplicación negama Varios 3 31-05-2003 03:05:02


La franja horaria es GMT +2. Ahora son las 21:28:18.


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