PDA

Ver la Versión Completa : stasus impresora


botones67
22-08-2003, 09:14:42
Ayer muy amablemente delphi.com.ar, me dio una posile solución para saber el estado de la impresora antes de imprimir.

El codigo propuesto no funciona me da error interno de memoria.
code:--------------------------------------------------------------------------------
function PrinterStatus : integer;
asm
mov ah, 2 // function 2 - returns status of port
mov dx, 0 // lpt1 = 0, lpt2 = 1 etc
int $17 // status in ah
mov al, ah
and eax, $FF // status now in eax with top 24 bits cleared
end;

const
PrinterCodes : array [0..7] of string =
('printer timed-out',
'unused',
'unused',
'I/O error',
'printer selected',
'out of paper',
'printer acknowedgment',
'printer not busy');

procedure TForm1.Button1Click(Sender: TObject);
var
L,P : integer;
begin
P := PrinterStatus; //status of printer in P
ListBox1.Clear;
for L := 0 to 7 do
if P and (1 shl L) <> 0 then
ListBox1.Items.Add (PrinterCodes [L]);
end;


Tambien Hizo referencia a crear una instancia de TPrinterStatus y utilizar sus propiedades.

¿ Me podias decir como concretamente como se crea esta instancia y como poder utilizar sus propiedades.?

Saludos y gracias anticipadas.

BOtones67

delphi.com.ar
22-08-2003, 16:01:11
Verdaderamente, te recomiendo el otro método (http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20147343.html) , porque utiliza las Apis del SPOOL de Windows... y no trabaja directamente con el puerto, creo haberte comentado que en algunas plataformas (NT) esto no esta permitido. Te he pasado los dos métodos, solo en carácter informativo, y lamento no tener tiempo como para darte una explicación resumida.
De todos modos, este código yo lo he probado anteriormente sin problemas, en un Win98... el único problema es que funciona bien solo con impresoras locales.

PD: Lee la guía de estilos, y evita crear nuevos hilos para un mismo tema.

Saludos!

botones67
22-08-2003, 17:21:05
Muchas gracias por perder tu tiempo conmigo.

Saludos.