Hallo,
meine Delphi Appl. (D5) soll Events von einem Visual Basic COM-Server
empfangen. Was eigentl. auch funktioniert. Das Problem ist, daß die von dem ausgelöstem Event erwarteten Rückgabewerte (var Variant), immer leer sind (Der blick in dem VB-Debugger zeigte, daß diese Werte leer ankommen).
Meine Frage ist :
Wie kann ich dafür sorgen das die Parameterwerte auch an den VB-Server durchgereicht werden.
Szenario :
Mit EventSinkImp.exe habe ich das EventSink-Objekt erstellt.
Delphi erzeugt durch späte Bindung eine Instanz von dem VB-Server.
(eine frühe Bindung erzeugte zwar auch das Objekt aber nach dem ersten Zugriff auf eine Server-Methode kam es zu einer Fehlermeldung).
Danach erzeugt er (über die Klasse) das SinkObjekt und weist ihm eine Behandlungsroutine zu, welche die Parameter mit Leben füllt.
Hier einen Ausschnitt :
<PRE>
...
oVar := CreateOLEObject('VBCOMDLL.Kunde');
AnEvent := TVBEventMethode.Create(Form1);
AnEvent.Connect(IUnKnown(oVar));
AnEvent.GetXML := onEvent;
...
Form1.OnEvent(Var XML : OleVariant);
begin
XML := '<CLIENTS><KUNDE Nr="1"></KUNDE></CLIENTS>';
end
</PRE>
meine Delphi Appl. (D5) soll Events von einem Visual Basic COM-Server
empfangen. Was eigentl. auch funktioniert. Das Problem ist, daß die von dem ausgelöstem Event erwarteten Rückgabewerte (var Variant), immer leer sind (Der blick in dem VB-Debugger zeigte, daß diese Werte leer ankommen).
Meine Frage ist :
Wie kann ich dafür sorgen das die Parameterwerte auch an den VB-Server durchgereicht werden.
Szenario :
Mit EventSinkImp.exe habe ich das EventSink-Objekt erstellt.
Delphi erzeugt durch späte Bindung eine Instanz von dem VB-Server.
(eine frühe Bindung erzeugte zwar auch das Objekt aber nach dem ersten Zugriff auf eine Server-Methode kam es zu einer Fehlermeldung).
Danach erzeugt er (über die Klasse) das SinkObjekt und weist ihm eine Behandlungsroutine zu, welche die Parameter mit Leben füllt.
Hier einen Ausschnitt :
<PRE>
...
oVar := CreateOLEObject('VBCOMDLL.Kunde');
AnEvent := TVBEventMethode.Create(Form1);
AnEvent.Connect(IUnKnown(oVar));
AnEvent.GetXML := onEvent;
...
Form1.OnEvent(Var XML : OleVariant);
begin
XML := '<CLIENTS><KUNDE Nr="1"></KUNDE></CLIENTS>';
end
</PRE>
Comment