Quita las directivas de compilacion {$I(+-)}
{$I-} Reset( Printer );
{$I+}
Esto hace que no salte ninguna exception, a pesar de que puede haber algún error.
Si utilizas estas directivas de compilación deberías ver el resultado de IOResult, para ver si todo ha ido bien.
Código Delphi
[-]
AssignFile( Printer, 'LPT1' );
FileMode := fmOpenReadWrite;
try
Reset( Printer );
Rewrite( Printer );
Write( Printer, CHR(27) + CHR(64 ) ); <--- aqui se tranca
except
on e:Exception do
begin
ShowMessage('La impresora no responde'+#13+e.Message);
end;
end;
De todos modos no se porqué haces un Reset y luego un Rewrite.
Deberías hacer solo uno de ellos y creo que es Rewrite.