Ver Mensaje Individual
  #1  
Antiguo 18-08-2010
jardineitor jardineitor is offline
Registrado
 
Registrado: ago 2010
Posts: 3
Reputación: 0
jardineitor Va por buen camino
Unhappy 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!
Responder Con Cita