Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Access violation at address (https://www.clubdelphi.com/foros/showthread.php?t=50595)

elarys 22-11-2007 16:58:12

Access violation at address
 
Buenas, al pasar codigo de visual basic a delphi, en basic viene un ocx y lo he pasado a delphi, no se si sera que esta mal pasado a delphi el ocx (creo que es para delphi3 y estoy con delphi6), cuando quiero pasar el ejemplo de visual a delphi me da el error que escribi en el titulo.
Cabe aclarar que es para imprimir en la impresora fiscal TM-U300A... en visual basic funciona correctamente.

Codigo Visual Basic para imprimir un ticket
'Tique
res = Me.PrinterFiscal1.OpenTicket("G")
If res Then res = Me.PrinterFiscal1.SendTicketItem("ARTICULO 1", "1000", "100", "2100", "M", "0", "0")
If res Then res = Me.PrinterFiscal1.GetTicketSubtotal("P", "LINDO SUB")
If res Then res = Me.PrinterFiscal1.SendTicketPayment("PAGO1", "200", "T")
If res Then res = Me.PrinterFiscal1.CloseTicket

Codigo en delphi
Código Delphi [-]
var
  res : boolean;
  CF : PrinterFiscal;
  tip : widestring;
begin
  tip := 'G';
  res := CF.OpenTicket(tip); //aqui me da el error
  //  if res then res := CF.SendTicketItem("ARTICULO 1", "1000", "100", "2100", "M", "0", "0");
  //  if res then res := CF.GetTicketSubtotal("P", "LINDO SUB");
  //  if res then res := CF.SendTicketPayment("PAGO1", "200", "T");
  //  if res then res := CF.CloseTicket;

En donde OpenTicket es una funcion
Código Delphi [-]
  function OpenTicket(var StorageDataType: WideString): WordBool; safecall;
 
  function OpenTicket(var StorageDataType: WideString): WordBool; dispid 1610809387;

El problema puede estar al pasar datos WideString?

basti 22-11-2007 17:04:53

Te falta crear el objeto:
Código Delphi [-]
var
  res : boolean;
  CF : PrinterFiscal;
  tip : widestring;
begin
  tip := 'G';
  CF := PrinterFiscal.Create(self); // o algo así dependiendo de la definición de create
  res := CF.OpenTicket(tip);

elarys 22-11-2007 17:23:44

Si si, pero lo extraño es que el Create no me lo hace
y me da el siguiente error en

Código Delphi [-]
  CF := PrinterFiscal.Create(self);

Object or class type required

eduarcol 22-11-2007 17:30:56

estas seguro que PrinterFiscal es la clase y no una instanciacion???

por regla general en delphi es: TPrinterFiscal

elarys 22-11-2007 17:45:45

Si estoy seguro, el problema es que el ocx es para una impresora vieja y parece que no funciona bien con delphi6.
De aqui baje el ocx, con codigo fuente en visual basic.

ftp://ftp.epson.com/latin/drivers/Im.../OCXFiscal.zip

elarys 22-11-2007 17:46:40

Alguien con mas experiencia podria ayudarme con el ocx

elarys 22-11-2007 18:24:35

Bueno al final la declaracion era en la parte privada de la unidad

Código Delphi [-]
private
  CF : _PrinterFiscalDisp;

Asi me funciono


La franja horaria es GMT +2. Ahora son las 15:51:32.

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