Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2014
rgarcia_ayala rgarcia_ayala is offline
Registrado
 
Registrado: sep 2008
Posts: 4
Poder: 0
rgarcia_ayala Va por buen camino
Ayuda con dll externa

Estimados,

Les solicito una ayuda con este tema pues es mi primer contacto con DLLs.
Necesito ejecutar un metodo de una clase que esta incluida en una dll construida en VB. La clase se llama '_clsSobre' y su metodo es 'Prueba'.

Les pego el codigo que estoy intentando usar:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows,  eFacturaDLL_TLB, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)

    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  MiclsSobre : _clsSobre;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var  MiclsSobre : _clsSobre;
begin
        MiclsSobre.Prueba;
end;

end.
Cuando ejecuto mi aplicacion me tira el siguiente error:

'project Efactura.exe raised exception class EAccessViolation with ......'

Me pueden ayudar o decir por donde empezar ?
Imágenes Adjuntas
Tipo de Archivo: jpg Capture.jpg (7,7 KB, 8 visitas)

Última edición por nlsgarcia fecha: 19-03-2015 a las 19:03:41. Razón: Sintaxis Delphi
Responder Con Cita
  #2  
Antiguo 31-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rgarcia_ayala, bienvenido a Club Delphi

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Cuando pongas código en tus mensajes usa TAG's para darle mas claridad como lo explica la siguiente imágen:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 31-03-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Nos podrías subir la DLL de ejemplo?
¿Es una DLL? ¿Un servidor COM?

En el código que has puesto no hay referencia a la DLL; Debería fallarte al compilar ¿no?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 31-03-2014
rgarcia_ayala rgarcia_ayala is offline
Registrado
 
Registrado: sep 2008
Posts: 4
Poder: 0
rgarcia_ayala Va por buen camino
Muchas gracias por responder.

Ok Neftali, te subo la dll en cuestion.

Pero te cuento que finalmente y por ensayo y error pude hacerla funcionar..... Pero sigo sin entender mucho sobre el tema.
Te paso el código que está funcionando:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows,  eFacturaDLL_TLB, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);


  private

      { Private declarations }
  public
    { Public declarations }
  end;

  MiclsSobre = class(CoclsSobre);  // clase definida en unit eFacturaDLL_TLB y que se encarga de la creacion de la clase _clsSobre, y en             
                                              // definitiva la que tiene definido el método 'Prueba'.

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
        MiclsSobre.Create.Prueba;    // tira el clásico 'Hola mundo' 
end;

end.
Archivos Adjuntos
Tipo de Archivo: rar eFacturaCOM.rar (44,9 KB, 13 visitas)
Responder Con Cita
  #5  
Antiguo 31-03-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo primero es que es un servidor COM, por lo tanto hay que registrarla con regsvr32.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 31-03-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
(1) Registrar la DLL con regsvr32
(2) Importarla desde Delphi (Import Type Librery) que genera el fichero TLB
(3) Un código similar a este debería bastar para acceder...

Código Delphi [-]
uses
  eFacturaDLL_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: clsCFE;
  j:integer;
begin
  i := CoclsCFE.CReate;
  j := i.Prueba;
  ...
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 01-04-2014
rgarcia_ayala rgarcia_ayala is offline
Registrado
 
Registrado: sep 2008
Posts: 4
Poder: 0
rgarcia_ayala Va por buen camino
Muchas gracias por tus aportes Neftali, han sido de mucha ayuda.
Considero que el tema ha sido resuelto, pero antes me gustaria que me sugirieras algunos hilos para poder entender mejor lo que es servidor COM y lo que es DLL.

Saludos y muchas gracias nuevamente.
Responder Con Cita
  #8  
Antiguo 01-04-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Todo son DLL's, no son cosas diferentes.
Si revisas documentación de MIicrosoft encontrarás toda la que necesites.
Una simple búsqueda en Google te dará infinitos resultados.

Empieza por la wiki.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 19-03-2015
rgarcia_ayala rgarcia_ayala is offline
Registrado
 
Registrado: sep 2008
Posts: 4
Poder: 0
rgarcia_ayala Va por buen camino
Error compilar fichero TLB de DLL externa (VB)

Estimado Neftali,

Utilizaba una dll externa desarrollada en VB a la cual le han introducido modificaciones y la cual al registrar e instalar no me generó ningún tipo de error.
El problema surge cuando compilo mi aplicación:

[Error] eFacturaCOM_TLB.pas(248): Property setters cannot take var parameters.

Código Delphi [-]
uses
  Windows,  Messages, DateUtils, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, eFacturaCOM_tlb, OleServer;

Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
var
        cfe : clsCFE;
        jj : integer;
        el_xml : widestring;
begin

   cfe := coclscfe.create;

    // cabezal
  cfe.AnoEmision := ANOEMISION.Text;
  cfe.MesEmision := MESEMISION.Text;
  cfe.DiaEmision := DIAEMISION.Text;
  cfe.AnoVto     := ANOVTO.Text;
  cfe.MesVto     := MESVTO.Text;
  cfe.DiaVto     := DIAVTO.Text;
  cfe.TipoCFE    := strtoint( TIPOCFE_CODIGO.Text );
  cfe.IndicadorMBruto := strtoint( IndicadorMbruto_cod.Text );
  cfe.FormaPago := strtoint( FormaPago_cod.Text );

  ...

Adjunto captura del error al compilar y la nueva dll.
Imágenes Adjuntas
Tipo de Archivo: jpg Capture.jpg (28,7 KB, 4 visitas)
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Integración con una dll externa con COM+ jars Providers 2 08-03-2013 11:09:42
Conexion BD externa emeritos Conexión con bases de datos 1 30-11-2012 14:42:37
Ayuda con Aplicacion Externa!!! AndrecitoPz Varios 4 20-11-2012 01:01:54
Aplicacion externa a c++ alloger C++ Builder 1 28-10-2006 00:37:09
ip externa migueilichenco Internet 1 30-08-2003 05:35:36


La franja horaria es GMT +2. Ahora son las 22:10:44.


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