Epson LX-300 x Epson Lx-300

17/09/2004

Pessoal,


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:


Respostas

17/09/2004

Vinicius2k

Colega,

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+


Responder Citar

17/09/2004

Ce

Colega...

//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);


Responder Citar

17/09/2004

Vinicius2k

Colega,

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&93;);
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&91;i&93;) > 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+


Responder Citar

17/09/2004

Ce

:arrow: Perfeito Vini ! Resolvido.. era o nome da printer mesmo pelo Win XP...... aqui no sul falamos... ´Bah meu, tu é o cara tche !´

valeu :wink:


Responder Citar

17/09/2004

Martins

:D Vini! meu brother....

Estou com o mesmo problema q o colega [b:8d9907fd0c] ce[/b:8d9907fd0c], vc matou dois problemas com uma dica só.

valeu...


Responder Citar