Array
(
)

Epson LX-300 x Epson Lx-300

Ce
   - 17 set 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:

Ocorreu um erro: Index out of range


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:


Vinicius2k
   - 17 set 2004

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+


Ce
   - 17 set 2004

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


Vinicius2k
   - 17 set 2004

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 :
#Código

...
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 :
#Código
...
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+


Ce
   - 17 set 2004

: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:


Martins
   - 17 set 2004

:D Vini! meu brother....

Estou com o mesmo problema q o colega ce, vc matou dois problemas com uma dica só.

valeu...