![]() |
Methode wird vom Automatisierungsobjekt nicht unterstützt
Ich reagiere auf folgende Nachricht:
Delphi-Quellcode:
Das sieht bei mir so aus:
OnMessage(Msg: IJabberMsg; Tag: IXMLTag)
Delphi-Quellcode:
Jetzt kommt aber die Exception, dass die Methode FromJID nicht von dem Automatisierungsobjekt unterstützt wird. Obwohl sie eigentlich im Interface deklariert ist:
procedure TDWJabberMsg.FOnMessageEvent(Sender: TObject; var Msg: OleVariant; var Tag: OleVariant);
begin ShowMessage(Msg.FromJID); if Assigned(OnDWMessage) then begin FOnMessage(self, Msg, Tag); end; end;
Delphi-Quellcode:
Wie komme ich jetzt da dran, um die Werte auszugeben?
IJabberMsg = interface(IDispatch)
['{2AE8D231-B888-11D3-AECB-00A076A018E8}'] ... property FromJID: WideString read Get_FromJID write Set_FromJID; ... end; |
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
hi, versuchs mal so ...
Delphi-Quellcode:
procedure TDWJabberMsg.FOnMessageEvent(Sender: TObject; var Msg: OleVariant; var Tag: OleVariant);
begin ShowMessage(TDWJabberMsg(Msg).FromJID); if Assigned(OnDWMessage) then begin FOnMessage(self, Msg, Tag); end; end; |
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
Leider kommt da: "Ungültige Typumwandlung". :(
|
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
hmm evtl reicht ja folgendes ...
Delphi-Quellcode:
procedure TDWJabberMsg.FOnMessageEvent(Sender: TObject; var Msg: OleVariant; var Tag: OleVariant);
begin ShowMessage(Msg); if Assigned(OnDWMessage) then begin FOnMessage(self, Msg, Tag); end; end; poste doch mal bitte das komplette interface ... dann kann ichs besser verstehen :wink: |
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
Liste der Anhänge anzeigen (Anzahl: 1)
Ich kann die Typbibliothek mal anhängen, weil ich nicht weiß, was du brauchst.
|
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
also
OnMessage(Msg: IJabberMsg; Tag: IXMLTag) ist was ganz anderes als TDWJabberMsg.FOnMessageEvent(Sender: TObject; var Msg: OleVariant; var Tag: OleVariant); ...auf was reagierst du denn nun ? |
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
Ich habe das in einer Klasse. In der wird der Event ausgelöst und dann wird der Event nach draußen weitergereicht, damit man drauf reagieren kann, wenn man die Klasse benutzt. Hat bisher sehr gut Funktioniert.
Beispiel: Konstruktor:
Delphi-Quellcode:
Und dann im Forular:
TOnAuthError = procedure(Sender: TObject; var ErrorText: OleVariant) of object;
TOnRosterItem = procedure(Sender: TObject; var Item: OleVariant) of object; TDWJabberSession = class(TObject) private FJabberSession: TJabberSession; ... FOnAuthError: TOnAuthError; ... procedure FOnAuthErrorEvent(Sender: TObject; var ErrorText: OleVariant); public ... property OnDWAuthError: TOnAuthError read FOnAuthError write FOnAuthError; ... end; constructor TDWJabberSession.Create; begin FJabberSession := TJabberSession.Create(nil); with FJabberSession do begin ... OnAuthError := FOnAuthErrorEvent; ... end; end; procedure TDWJabberSession.FOnAuthErrorEvent(Sender: TObject; var ErrorText: OleVariant); begin if Assigned(OnDWAuthError) then FOnAuthError(Self, ErrorText); end;
Delphi-Quellcode:
Mit diesem Ereignis geht das wunderbar, weil der Paramter vom Typ OleVariant ist. Jertzt weiß ichnicht, wie ich damit umgehen soll wenn der Parameter vom Typ IJabberMsg ist. Dieser Typ ist nach außenhin auch nicht bekannt.
procedure TForm1.OnJabAuthError(Sender: TObject;
var ErrorText: OleVariant); begin Memo1.Lines.Add(ErrorText + JabSes.LastError); end; Deklariere ich die Paramter wie hier: Zitat:
Delphi-Quellcode:
FJabberSession.OnMessage := FOnMessageEvent;
Zitat:
|
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
Warum nutzt du denn nicht den Componentenwrapper den dir Delphi erzeugt hat .. ist in der TLB Datei die du gepostet hast ?
|
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
Das habe ich schon probiert, wenn ich mich nicht täusche (Ich habe chon so viel probiert... ;) ). Wie würde denn das it dem Komponentenwrapper aussehen? Wäre schön, wenn ich morgen im Laufe des tages dem Chef einen funktionierenden Client präsentieren könnte. :?
|
Re: Methode wird vom Automatisierungsobjekt nicht unterstütz
Was muss ich denn installieren um das interface selbst zu testen ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz