Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   imprimir en una red española con Delphi aleman (https://www.clubdelphi.com/foros/showthread.php?t=30271)

quim 02-04-2006 11:10:36

imprimir en una red española con Delphi aleman
 
Hola,

tengo la version Delphi 5 (aleman) y no puede imprimir desde un programa Delphi en una impresora de red española. La impresora funciona con qualquier otro programa sin problema alguno y la programa funciona cuando la impresora está directamente conectada o la red es aleman. El fallo indicado es (Fließkommaüberlauf) debordamiento de una variable del tipo "float".

quizas puedo compilar mi alguien el codigo siguiente con una version español
(con un boton) y enviarme la exe para verificar si el problema viene de la versión.

Código Delphi [-]
implementation

{$R *.DFM}

uses printers;

procedure TForm1.Button1Click(Sender: TObject);
begin
  printer.begindoc;
  printer.canvas.textout(100,100,'TEXT');
  printer.enddoc;
end;

end.

Gracias, Quim - achim.reineke@gmx.de

Casimiro Notevi 02-04-2006 13:06:29

!qué raro!, de todas formas, seguro que podemos ayudarte.

marcoszorrilla 02-04-2006 19:14:17

Quizás el problema es que a la hora de mandarle a imprimir no encuentra la impresora al ser una impresora de Red, por otra parte el problema del idioma me lleva a pensar que el nombre de la impresora quizás no sea el mismo.

Porque no creas una rutina o función que te muestre las impresoras del sistema eliges una y luego lanzas el TextOut.

Mira este ejemplo, que yo suelo utilizar, aunque aquí la impresora ya la he guardado en una tabla y lo que hago es al mandar imprimir la vuelve a buscar en el sistema para asegurarse de que sigue existiendo.

Código Delphi [-]
Function GetImpresora(Impre:String):Integer;
Var
nCont:Integer;
lSearch:Boolean;
cNewLIne:String;
begin
lSearch:=False;
cNewLine:=Chr(10)+Chr(13);

  For nCont:=0 to Printer.Printers.Count - 1 do
  //buscamos la impresora en la lista del sistema
  begin

    if Pos(impre, Printer.Printers[nCont]) <> 0 then
    begin
    lSearch:=True;
    Result:=nCont;
    Break;
    end;

  end;

  if lSearch = False then
  begin
  Result:=-1;
  ShowMessage('Impresora no encontrada:'+cNewLine+Impre+cNewLine+'Se utilizará la predefinida.');
  end;
          
end;

......
procedure TfrRepara.SpeedButton2Click(Sender: TObject);
begin

  if  Not DmAni.Impres.Locate('Impresora',Dmani2.ConfImprefacturas.Value,[]) then
  DmAni.Impres.First;


Printer.PrinterIndex:=GetImpresora(DmAni2.ConfLptFacturas.value);
SetPaperSize(DmAni2.ConfAltoPapelFacturas.Value,Dmani2.ConfAnchoPapelFactuas.Value);

  With Printer.Canvas do
  begin
    Printer.BeginDoc;
    CabeceraRepara();
    DetalleRepara();
    Printer.EndDoc;
  end;
end;

Tschüss.

quim 03-04-2006 07:49:07

el problema sigue
 
Hola morcoszorilla,

parece que hablas también aleman :) la función que me has enviado va bien.

GetImpresora('HP Color LaserJet 2600n');

detecta la impresora sin problemas y también puedo imprimir el código fuente (y todo lo quiero) desde mi ordenador. Pero imprimir desde el programa no va.

Me gustaría hacer una prueba con una versión "española" del mismo código. Quizas puedes enviarme la versión EXE.

Ciao, Quim
Código Delphi [-]
 
uses printers;
Function GetImpresora(Impre:String):Integer;
Var
nCont:Integer;
lSearch:Boolean;
cNewLIne:String;
begin
lSearch:=False;
cNewLine:=Chr(10)+Chr(13);
  For nCont:=0 to Printer.Printers.Count - 1 do
  //buscamos la impresora en la lista del sistema
  begin
    if Pos(impre, Printer.Printers[nCont]) <> 0 then
    begin
    lSearch:=True;
    Result:=nCont;
    Break;
    end;
  end;
  if lSearch = False then
  begin
  Result:=-1;
  ShowMessage('Impresora no encontrada:'+cNewLine+Impre+cNewLine+'Se utilizará la predefinida.');
  end;
  With Printer.Canvas do
  begin
    Printer.BeginDoc;
    textout(100,100,'test');
    Printer.EndDoc;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  GetImpresora('HP Color LaserJet 2600n');
end;
end.

marcoszorrilla 03-04-2006 09:10:51

Compila esto lo acabo de probar y funciona sin problemas, claro que tienes que tener alguna impresora como predterminada.
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Printers,
  StdCtrls;

  Function GetImpresora(Impre:String):Integer;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetImpresora('HP Color LaserJet 2600n');
    With Printer.Canvas do
  begin
    Printer.BeginDoc;
    textout(100,100,'test');
    Printer.EndDoc;
  end;
end;

Function GetImpresora(Impre:String):Integer;
Var
nCont:Integer;
lSearch:Boolean;
cNewLIne:String;
begin
lSearch:=False;
cNewLine:=Chr(10)+Chr(13);
  For nCont:=0 to Printer.Printers.Count - 1 do
  //buscamos la impresora en la lista del sistema
  begin
    if Pos(impre, Printer.Printers[nCont]) <> 0 then
    begin
    lSearch:=True;
    Result:=nCont;
    Break;
    end;
  end;

  if lSearch = False then
  begin
  Result:=-1;
  ShowMessage('Impresora no encontrada:'+cNewLine+Impre+cNewLine+'Se utilizará la predefinida.');
  end;

end;


end.

Si quieres que te manda el Exe, me tienes que dar tu correo.

Auf Wiedersehen

quim 03-04-2006 13:24:33

mi correo:

achim.reineke@gmx.de

gracias


La franja horaria es GMT +2. Ahora son las 06:51:03.

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