Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Providers (https://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   Problema con una Dll COM y delphi 7 (https://www.clubdelphi.com/foros/showthread.php?t=69441)

jardineitor 18-08-2010 17:06:36

Problema con una Dll COM y delphi 7
 
Buenas, he sido lurker vuestro desde hace muuuucho tiempo y realmente leyendo el foro me habeis sacado de toda duda, peeeero, ahora tengo un problema del cual no salgo...

Entorno de trabajo:
Visual Basic .NET 2008 vs Delphi 7.

He hecho una dll en .NET, a modo de servidor COM, funciona de perlas, incluido en vb6, a excepcion de los eventos ...
En vb6 funcionan perfectamente, pero en delphi 7 no los dispara automaticamente, se ven, pero no se disparan...

ideas?

vamos a por el codigo:

Codigo de la DLL .NET (lo interesante claro)
Código:


General:
<Assembly: ClassInterface(ClassInterfaceType.None)>

Interface de las funciones/subs y demas:
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)> _
Public Interface IClass1
    <DispId(1)> Function InicioSygic(ByVal Ruta) As Integer
....
end interface

Interface del evento:
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)> _
Public Interface IClass1Events
    Sub elEvento(ByVal mensaje As String)
End Interface

Codigo restante:

<ComSourceInterfaces("ClassLibrary3.IClass1Events")> _
Public Class Class1
    Inherits MarshalByRefObject
    Implements IClass1
 ...
  <ComVisible(False)> _
    Public Delegate Sub elEventoHandler(ByVal mensaje As String)
    Public Event elEvento As elEventoHandler

El sub que uso para ejecutar el evento:
    Protected Sub OnElEvento(ByVal mensaje As String)
        RaiseEvent elEvento(mensaje)
    End Sub

Hasta aqui bien, pues ya digo que el vb6 la coge perfectamente y dispara el evento ...

Ahora codigo delphi:
Código:

Importo la libreria generando el Wrapper

en el _pas generado tengo esto:

// *************************************************//
// OLE Server Proxy class declaration
// Server Object    : TClass1
// Help String      :
// Default Interface: IClass1
// Def. Intf. DISP? : Yes
// Event  Interface: IClass1Events
// TypeFlags        : (2) CanCreate
// ***********************************************//
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
  TClass1Properties= class;
{$ENDIF}
  TClass1 = class(TOleServer)
 
private
    FOnelEvento: TClass1elEvento;
    FIntf:        IClass1;

En el form principal del mi programa:

type
....
 
protected
    procedure delphievento(Sender: const Value: WideString);  <-Esto debe ser lo erroneo


Aqui la procedure para que cuando dispare lo reciba
procedure TForm1.delphievent(Sender: const Value: WideString);  <- Y esto
begin
      Memo1.Lines.Add(value);
end;

Resultado... el evento no dispara xD ..., alguna idea?
gracias anticipadas!

jardineitor 18-08-2010 19:15:53

vale... cambios en el codigo delphi (que tampoco van, pero se lo traga...)

Código:

en el main:
PROTECTED       
PROCEDURE eventodelphi(sender: Tclass1elevento);

.....................................

en el codigo
PROCEDURE TF_Arranque.eventodelphi(sender: Tclass1elevento);
VAR
    lalala, mensaje: widestring;
BEGIN
    showmessage('funciona');
END;

y no pasa por ahi... porque?

jardineitor 20-08-2010 17:06:25

Nada... ni montado SOLO un interface ni leches... en delphi 7 no dispara el evento...


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

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi