Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2006
guiweb guiweb is offline
Miembro
 
Registrado: may 2006
Posts: 17
Poder: 0
guiweb Va por buen camino
Manejo de una DLL

Hola a todos, tengo el siguiente problema, supongo que mi pregunta les sonará comun, pero no lo es:

Ambiente de desarrollo: Delphi 5 corriendo sobre WinXP sp2.

estoy desarrollando un plugin, que debe comunicarse con una impresora fiscal, para esto el fabricante de la impresora me ha facilitado 2 DLL
una llamada FISCAL232.DLL que es la que se encarga de la comunicacion con la impresora y otra llamada RH4610Kc4.DLL que es la que interactua con mi sistema. hasta aca vamos bien, ahora paso a detallar cuales han sido mis pasos espero que me digan si me he equivocado o no..

para utilizar la DLL RH4610Kc4 hago los siguientes pasos.

Menu: proyecto->importar Libreria; aca busco la DLL RH4610Kc4 y la cargo al sistema, esto modifica algunos parametros de mi programa pero hasta ahi todo bien, dentro del USES me crea una llamada a RH4610Kc4_TLB, les coloco el codigo de lo que me va quedando:
Código Delphi [-]
uses
 Windows, RH4610Kc4_TLB, forms,inifiles, Dialogs,Controls,Classes, Graphics ,SysUtils, messages, MSXML_TLB, ShellAPI;

luego YO hago esto:

Código Delphi [-]
type
  TInvcUpdate = class(TOnUpdate)
  private
  ClassPrincipal1: TClassPrincipal; // instancio la clase que viene con la DLL
    fInvoice, fForm: IRdaDocument;
    fInvoiceItem: IRdaDocument;
  public
    class function Table: integer; override;
    procedure Initialize(RProApp: TRProApp;
                         Doc: IRdaDocument); override;
    function BeforeUpdate: boolean; override;
    procedure AfterUpdate; override;
  end;

y luego simplemente uso las funciones que vienen en la DLL de esta forma:
Código Delphi [-]
ClassPrincipal1.Open_Port(1);

con este comando se supone que mi plugin abre el puerto de la impresora para recibir comandos fiscales... pero la verdad es que recibo un error del tipo 25(0x19)... lei en el manual de errores de la impresora y dice que es un problema con la Memoria Fiscal y que debo reemplazarla, lo cual es MENTIRA, ya que tengo hecho un programa en visual que ocupa exactamente los mismos instrumentos que Delphi, y FUNCIONA a las mil maravillas...

ahora yo les pregunto: Esta bien lo que estoy haciendo??? o tengo que llamar a la DLL de otra manera??

muchas gracias por darse el tiempo de leer y pensar en mi problema, son muy amables
Responder Con Cita
  #2  
Antiguo 29-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé si tendrá algo que ver o no, pero, cuando en el código de más arriba comentas que "instancias la clase que viene con la DLL" en realidad no estás haciéndolo, es decir, esa línea lo que hace es declarar un miembro de "TInvcUpdate" del tipo "TClassPrincipal".

Es decir, que antes de llamar a ningún método de dicho miembro debes previamente crear el objeto. Supongo que lo haces, pero, en vista del comentario en el código que te digo he querido comentar yo esto por si acaso.

Me llama la atención también que dices que tienes un programa escrito en Visual (Basic, supongo) que funciona bien, pero, ¿utiliza la misma librería DLL? Es más, ¿en qué lenguaje está escrita dicha librería DLL? Me llama la atención por el contenido de la DLL, una clase, no una función. ¿O qué me estoy perdiendo?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 29-06-2006
guiweb guiweb is offline
Miembro
 
Registrado: may 2006
Posts: 17
Poder: 0
guiweb Va por buen camino
sorry, tienes razon, el comentario que estoy colocando es un error.... nada que ver y en cuanto a la DLL está desarrollada en Visual Basic (yo no la hice, me la entrego la empresa).

por ahi lei un libro ayer, en que decía que no importaba el lenguaje en el que estaba desarrollada la DLL tendria que funcionar de todas formas.

sigo con la duda de que si la llamada a la DLL es correcta o debería hacerla de otra forma... tambien leí en el libro que se podia llamar a la funcion de la DLL y usarla como external... me conviene esto??

gracias por tu respuesta.. la verdad es que no se mucho delphi na mas las cosas basicas pero esto con el manejo de las DLL me complicó un poco...

Salu2
Responder Con Cita
  #4  
Antiguo 29-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues me parece que no voy a poder ayudarte. Si se tratara de utilizar alguna función de una DLL tal vez podría, pero, según parece tú tratas de utilizar de la DLL una clase escrita en Visual Basic (y extrañamente nombrada como se acostumbra en Delphi, comenzando con una "T" de "Type") y hasta ahí no llego, porque nunca tuve necesidad de algo así.

Quizá algún compañero pueda decir algo al respecto. Suerte en todo caso.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 30-06-2006
guiweb guiweb is offline
Miembro
 
Registrado: may 2006
Posts: 17
Poder: 0
guiweb Va por buen camino
mmm pues, gracias por la ayuda... pero eso es lo que me entrega la DLL, es mas, he logrado hacer lo siguiente: escribo en mi codigo ClassPrincipal1. y espero un segundo, y se me desplega un menu con las funciones de la DLL, y en este caso selecciono Open_Port.

eso te sirve de algo?

Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
manejo de BD raco Varios 0 21-07-2005 01:25:33
Tinifile.. manejo de .ini marceloalegre Varios 2 28-04-2005 00:29:59
Manejo de memoria rastafarey Varios 3 07-04-2005 21:16:18
manejo de puertos YolandaM Varios 17 14-05-2004 02:00:34
Manejo de Installshield Lionel Varios 0 15-04-2004 14:54:49


La franja horaria es GMT +2. Ahora son las 13:00:00.


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