Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-09-2005
oliverinf oliverinf is offline
Miembro
 
Registrado: feb 2004
Posts: 65
Poder: 21
oliverinf Va por buen camino
Problema con OCX impresor fiscal Epson

Hola gente del foro.... les comento cual es el problema que tengo, que la verdad me está volviendo loco ya que he probado de todo y no se que mas hacer.

Estoy utilizando el OCX de Epson para comunicarme con un controlador fiscal Epson, y tengo el siguiente problema (escribo unas lineas de código de ejemplo)

Procedure <XXXXX>
var PrnFisc : _PrinterFiscalDisp;
Aux:WideString;
begin
inherited;
//Crear obj. de comunicación con el controlador y setear parametros.
PrnFisc := CreateComObject(CLASS_PrinterFiscal) as _PrinterFiscalDisp;
PrnFisc.PortNumber := 1;
PrnFisc.BaudRate := '9600';

Aux:= 'LInea a imprimir';
PrnFisc.OpenNoFiscal;
prnfisc.SendNoFiscalText(Aux);
prnfisc.CloseNoFiscal;
MessageDlg('error', mtInformation, [mbOk], 0);
end;

Ojo tener en cuenta que solo es un ejemplo, no le busquen sentido porque está la linea del MessageDlg, ahora paso a explicar...

Lo que hago es, crear la instancia que se comunica con el controlador, abrir doc. no fiscal , imprimir linea y cerrar No fiscal.
Despues muestro el cartel, Hasta aca todo bien pero cuando cierro la aplicación me tira este tipo de error:

" Error de aplicación : La instrucción en "0x21c14667" hace referencia a la memoria en "0x21c14667". La memoria no se puede "read"."

Lo raro es que si saco la linea "MessageDlg('error', mtInformation, [mbOk], 0);", el error no me lo dá.

Es más (otra cosa que más me confunde), si inserto un punto de corte justo en la linea indicada cuando estoy haciendo debbug, tampoco me lo tira.

Alguien me puede explicar que está pasando ?

PD. Trabajo en D7 y WinXP.

Saludos a todos y espero que se entienda....
Responder Con Cita
  #2  
Antiguo 02-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Probá asignando Nil a PrnFisc antes de terminar el procedimiento, (Unassigned si lo llegas a tratar como Variant), y como extra despues de esto, prueba agregando un Application.ProcessMessages;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 02-09-2005
oliverinf oliverinf is offline
Miembro
 
Registrado: feb 2004
Posts: 65
Poder: 21
oliverinf Va por buen camino
Gracias por responder Delphi.com.ar.
Te comento que ya probé hacer lo que me dijiste (el unansigned no lo toma porque no es variant).

La verdad que estoy bastante confundido con lo que pasa.

Te comento lo que probé:
En vez de declarar la variable PrnFisc local al procedimiento, la declaré en la sección private del form y en el formCreate hice lo siguiente:

procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
inherited;
PrnFisc := CreateComObject(CLASS_PrinterFiscal) as _PrinterFiscalDisp;
PrnFisc.PortNumber := 1;
PrnFisc.BaudRate := '9600';
MessageDlg('Creado', mtInformation, [mbOk], 0);
end;

Cuando inserto la linea MessageDlg('Creado', mtInformation, [mbOk], 0);, no tira el error, pero si la comento si lo tira.

" Error de aplicación : La instrucción en "0x21c14667" hace referencia a la memoria en "0x21c14667". La memoria no se puede "read"."

????? la verdad que estoy muy , pero muy confundido, ya no se que pensar ni hacer...

Por las pruebas que hice, indudablemente hay un problema con la asignación de memoria. Ahora, no se como resolverlo porque ni siquiera sé como empezar.... estoy desesperado...

Si se te ocurre algo más te lo voy a agradecer.
Responder Con Cita
  #4  
Antiguo 02-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
¿No estas usando funciones de manejo de memoria tipo Move, CopyMemory, ZeroMemory, FillChar?...
¿Si no pones el MessageDlg en que línea se produce el error?...
¿Hay seguridad de que funcione bien la OCX?...
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 02-09-2005
oliverinf oliverinf is offline
Miembro
 
Registrado: feb 2004
Posts: 65
Poder: 21
oliverinf Va por buen camino
Cita:
Empezado por delphi.com.ar
¿No estas usando funciones de manejo de memoria tipo Move, CopyMemory, ZeroMemory, FillChar?...
¿Si no pones el MessageDlg en que línea se produce el error?...
¿Hay seguridad de que funcione bien la OCX?...
No estoy usando funciones del tipo que mencionas.
Si no pongo el MessageDlg no tira el error, y si lo inserto al MessageDlg tira el error al cerrar la aplicación. No la tira en una linea en particular, de hecho, la funcionalidad (por ejemplo imprimir un documento No fiscal funciona OK), pero al cerrar la apllicación tira el error.

Con respecto al OCX, no te lo puedo asegurar que pasa en el D7, lo que si te puedo asegurar que el mismo OCX en aplicaciones para Micrsoft Visual Fox 6 funciona bien.

Lo que me resulta raro, es que diablos???? (por no decir otra palabra) tiene que ver que yo inserte o no el MessageDlg.

Saludos,
Responder Con Cita
  #6  
Antiguo 10-09-2005
mcastrog mcastrog is offline
Registrado
 
Registrado: sep 2005
Ubicación: Colombia
Posts: 3
Poder: 0
mcastrog Va por buen camino
hola,


ensaya asi:
crea el objeto
try
proceso
..

finally
cierras el objeto
end;

Tal vez te ayude a cerrar el proceso y no mande error
Responder Con Cita
  #7  
Antiguo 14-09-2005
oliverinf oliverinf is offline
Miembro
 
Registrado: feb 2004
Posts: 65
Poder: 21
oliverinf Va por buen camino
Hola, mcastrog, te comento que tambien lo he probado y nada... la verdad que estoy desesperado....
Responder Con Cita
  #8  
Antiguo 14-09-2005
Akkan Akkan is offline
Miembro
 
Registrado: jul 2004
Ubicación: Santiago de Chile...
Posts: 11
Poder: 0
Akkan Va por buen camino
Hola Oliverinf

Yo tengo un código en que imprimo con unas TMU 200 y me ha funcionado OK! donde se envían los comandos directos por el puerto COM.

Si te interesa me avisas.

__________________
Akkan
Responder Con Cita
  #9  
Antiguo 17-10-2005
Avatar de CartoneroWeb
CartoneroWeb CartoneroWeb is offline
Registrado
 
Registrado: oct 2005
Ubicación: Una ciudad donde la gente camina por el medio de la calle y los autos van en contramano
Posts: 9
Poder: 0
CartoneroWeb Va por buen camino
cero comunicación con la printer

Amigos: No consigo hacer andar el OCX con Delphi 7. No obtengo respuestas de la impresora, salvo que el puerto lo abre normalmente.
Ayudas y sugerencias serán muy bien recibidas!
Responder Con Cita
  #10  
Antiguo 12-01-2007
cmschneider cmschneider is offline
Registrado
 
Registrado: oct 2006
Posts: 6
Poder: 0
cmschneider Va por buen camino
Hola Oliverinf. Te cuento que yo también tengo el mismo problema. Luego de mucha prueba y error he encontrado un método para que desaparezca el problema pero no se justificar bien que es lo que hace. En el evento OnClose asigno a la variable PrnFisc el valor nulo, vuelvo a crear el objeto Com y lo vuelvo a poner Nulo, de esta forma:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
PrnFisc:=Nil;
PrnFisc := CreateComObject(CLASS_PrinterFiscal) as _PrinterFiscalDisp;
PrnFisc := Nil;
Application.ProcessMessages;
Action:=caFree;
end;

Espero que te sea de alguna ayuda
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:40:55.


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
Copyright 1996-2007 Club Delphi