Epson LX-300 x Epson Lx-300
17/09/2004
0
Desenvolvi uma aplicação com printer na Epson LX-300 no qual funcionando perfeitamente (impressao de nota fiscal). Quando eu altero a impressora para a Epson LX-300+ me gera um erro e não permite a impressão:
[b:fff148faef]Ocorreu um erro: Index out of range[/b:fff148faef]
Já testei em SO´s diferentes (Win98 e XP) e também em relação a impressora padrão ou nao.. com a Epson LX-300 funciona perfeitamente em todas as opções.. mas.. mas... EPSON LX-300+ me gera erro!
Alguma dica?? :shock:
Ce
Posts
17/09/2004
Vinicius2k
Ao que me parece este erro não está vindo da impressora...
É só uma suposição, mas...
Como vc está fazendo a seleção da impressora através da aplicação?
Creio que a aplicação não está conseguindo identificar em qual impressora deve imprimir, porque a rotina está tentando setar uma impressora que não existe...
Poste aqui uma parte do código utilizado por vc para a impressão para que possamos tentar ajudá-lo melhor...
T+
17/09/2004
Ce
//aqui eu pego o nome da impressora ... independe se for a padrão ou nao.. depois disso.. mando imprimir usando o canvas
for i := 1 to Printer.Printers.Count do
begin
if Printer.Printers[i-1] = ´Epson LX300+´ then
// if Printer.Printers[i-1] = ´Win2PDF´ then
break;
end;
Printer.PrinterIndex := (i-1);
17/09/2004
Vinicius2k
De certa forma estou surpreso que a rotina que vc passou realmente funcione, porque ´Epson LX-300´ ou ´Epson LX-300+´ pode não ser realmente o nome da impressora para o objeto TPrinter, dependendo da versão do Windows...
O nome completo acrescenta a porta em Win 9X/ME...
Vc pode fazer o teste com, por exemplo, adicionando todos os nomes num Memo :
... var i: integer; begin for i:= 0 to (Printer.Printers.Count - 1) do Memo1.Lines.add(IntToStr(i) + ´ - ´ + Printer.Printers[i]); end;
Para identificar de uma forma mais genérica, eu utilizaria desta forma :
... var i: integer; begin for i:= 0 to (Printer.Printers.Count - 1) do begin if Pos(´Epson LX-300+´, Printer.Printers[i]) > 0 then begin Printer.PrinterIndex:= i; Break; end; end; end;
Desta forma é verificada a ocorrencia de uma parte do texto no nome da impressora...
T+
17/09/2004
Ce
valeu :wink:
17/09/2004
Martins
Estou com o mesmo problema q o colega [b:8d9907fd0c] ce[/b:8d9907fd0c], vc matou dois problemas com uma dica só.
valeu...
Clique aqui para fazer login e interagir na Comunidade :)