AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Methode wird vom Automatisierungsobjekt nicht unterstützt
Thema durchsuchen
Ansicht
Themen-Optionen

Methode wird vom Automatisierungsobjekt nicht unterstützt

Ein Thema von Luckie · begonnen am 16. Feb 2006 · letzter Beitrag vom 17. Feb 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Methode wird vom Automatisierungsobjekt nicht unterstützt

  Alt 16. Feb 2006, 12:49
Ich reagiere auf folgende Nachricht:
OnMessage(Msg: IJabberMsg; Tag: IXMLTag) Das sieht bei mir so aus:
Delphi-Quellcode:
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;
Jetzt kommt aber die Exception, dass die Methode FromJID nicht von dem Automatisierungsobjekt unterstützt wird. Obwohl sie eigentlich im Interface deklariert ist:

Delphi-Quellcode:
IJabberMsg = interface(IDispatch)
    ['{2AE8D231-B888-11D3-AECB-00A076A018E8}']
    ...
    property FromJID: WideString read Get_FromJID write Set_FromJID;
    ...
end;
Wie komme ich jetzt da dran, um die Werte auszugeben?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 13:55
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 13:58
Leider kommt da: "Ungültige Typumwandlung".
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 14:05
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 14:08
Ich kann die Typbibliothek mal anhängen, weil ich nicht weiß, was du brauchst.
Angehängte Dateien
Dateityp: pas jabbercom_tlb_828.pas (258,5 KB, 9x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 14:20
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 14:33
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:
  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;
Und dann im Forular:
Delphi-Quellcode:
procedure TForm1.OnJabAuthError(Sender: TObject;
  var ErrorText: OleVariant);
begin
  Memo1.Lines.Add(ErrorText + JabSes.LastError);
end;
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.

Deklariere ich die Paramter wie hier:
Zitat:
OnMessage(Msg: IJabberMsg; Tag: IXMLTag)
Sagt er mir an dieser Stelle:
FJabberSession.OnMessage := FOnMessageEvent;
Zitat:
[Fehler] DWJabber.pas(295): Inkompatible Typen: 'OleVariant' und 'IJabberMsg'
Deswegen habe ich sie als OleVariant deklariert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#8

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 16:17
Warum nutzt du denn nicht den Componentenwrapper den dir Delphi erzeugt hat .. ist in der TLB Datei die du gepostet hast ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 18:40
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#10

Re: Methode wird vom Automatisierungsobjekt nicht unterstütz

  Alt 16. Feb 2006, 19:21
Was muss ich denn installieren um das interface selbst zu testen ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz