Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   allgemeines Verständnisproblem mit Interfaces (https://www.delphipraxis.net/63275-allgemeines-verstaendnisproblem-mit-interfaces.html)

tommie-lie 16. Feb 2006 11:03

Re: allgemeines Verständnisproblem mit Interfaces
 
Zitat:

Zitat von Luckie
da mir der Code mit einer Access Violation abstürzt.

In welcher der beiden Zeilen? Ist das zurückgegebene Objekt gültig (!= nil)? Laut Doku will GetPres() ein Objekt aus der "Presence Databse" (whatever) zurückgeben. Es steht dort nicht, was geschehen soll, wenn dort kein Objekt drin ist, ich würde es für logisch halten, wenn nil zurückgegeben werden würde. Ist denn in deinem Jabber-Netzwerk jemand online?

Zitat:

Zitat von freak4fun
Fehlt hier nicht ein create?

Nein, ist eien Factory, GetPres() *ist* das Create, wenn man unbedingt mit der Teminologie von Create und Destroy arbeiten will (auf ein Destroy muss man dann aber verzichten, das gips nicht).
Zitat:

Zitat von freak4fun
Du solltest eine Klasse erstellen, die das Interface unterstützt.

Himmel! Wenn mir eine COM-Typbibliothek ein Interface gibt, will ich es nicht selber implementieren, sondern benutzen. Eine Klasse, die ein Interface implementiert, implementiert dieses Interface auch. D.h. die Klasse sollte alle Methoden des Interfaces mit Code hinterlegen. Michael will will aber aus einer fertigen Bibliothek ein Objekt benutzen. Die Klasse, die das implementiert, steckt in der Bibliothek. Er will ja lediglich das Interface benutzen und nicht seinen eigenen Jabber-Klon schreiben.
Bezüglich der Benutzung von Interfaces ist Michaels Code vollständig, ich weiß nur nicht, ob und was die COM-Bibliothek so alles zurückgibt, wenn mal was nicht funktioniert.

P.S.: Weiß Jan, daß es JOPL gibt, oder will er auch eine von Delphi unabhängige Lösung, ergo COM?

Flocke 16. Feb 2006 11:06

Re: allgemeines Verständnisproblem mit Interfaces
 
Kann es sein, dass dir GetPres nur ein IDispatch zurückliefert, dass du erst noch casten musst? Also:
Delphi-Quellcode:
JabberPres := (FJabberSession.GetPres(JID, '', True) as IJabberPres);

freak4fun 16. Feb 2006 11:13

Re: allgemeines Verständnisproblem mit Interfaces
 
Zitat:

Zitat von tommie-lie
Zitat:

Zitat von freak4fun
Fehlt hier nicht ein create?

Nein, ist eien Factory, GetPres() *ist* das Create, wenn man unbedingt mit der Teminologie von Create und Destroy arbeiten will (auf ein Destroy muss man dann aber verzichten, das gips nicht).
Zitat:

Zitat von freak4fun
Du solltest eine Klasse erstellen, die das Interface unterstützt.

Himmel! Wenn mir eine COM-Typbibliothek ein Interface gibt, will ich es nicht selber implementieren, sondern benutzen. Eine Klasse, die ein Interface implementiert, implementiert dieses Interface auch. D.h. die Klasse sollte alle Methoden des Interfaces mit Code hinterlegen. Michael will will aber aus einer fertigen Bibliothek ein Objekt benutzen. Die Klasse, die das implementiert, steckt in der Bibliothek. Er will ja lediglich das Interface benutzen und nicht seinen eigenen Jabber-Klon schreiben.
Bezüglich der Benutzung von Interfaces ist Michaels Code vollständig, ich weiß nur nicht, ob und was die COM-Bibliothek so alles zurückgibt, wenn mal was nicht funktioniert.

Ok, sorry ich schreib nichts mehr. :roll:

Luckie 16. Feb 2006 11:14

Re: allgemeines Verständnisproblem mit Interfaces
 
@Thomas: Das wars mit dem nil. So geht es:
Delphi-Quellcode:
function TDWJabberSession.GetStatus(AJID: WideString): string;
var
  JabberPres       : IJabberPres;
begin
  JabberPres := FJabberSession.GetPres(AJID, '', True);
  if Assigned(JabberPres) then
    result := JabberPres.Status;
end;
Ja, er kennt die JOPL. Die gehört zu Exodus und Exodus ist vom gleichen Autor wie der JabberCom Com-Server. Allerdings blicke ich bei Exodus und der JOPL nicht durch. Die JOPL scheint igrendwie nit Exodus verknüpft zu sein, jedenfalls benötigt sie Dateien aus dem Exodus Projekt und dort braucht man wieder die TNTKontrols, die ich zu Hause mit D6 Personal nicht zum Laufen gebracht habe. :?

tommie-lie 16. Feb 2006 11:48

Re: allgemeines Verständnisproblem mit Interfaces
 
Zitat:

Zitat von Luckie
@Thomas: Das wars mit dem nil.

Gut, daß ich meine Glaskugel gestern erst poliert habe :mrgreen:
Zu deinem aktuellen Code: Result may be undefined ;-)

Zitat:

Zitat von Luckie
jedenfalls benötigt sie Dateien aus dem Exodus Projekt und dort braucht man wieder die TNTKontrols, die ich zu Hause mit D6 Personal nicht zum Laufen gebracht habe. :?

Du sollst ja auch nicht zuhause arbeiten, du sollst deinen Schlafsack mit ins Büro bringen und dort arbeiten :mrgreen:
Ich bin nur bei der Suche nach der JabberCOM-Doku (in der ich hoffte, etwas über das Fehlerverhalten zu erfahren), über JOPL gestolpert und dacht, daß das wohl praktischer wäre, da es direkt eine Pascal-Implementierung ist.
Naja, vielleicht ist die COM-Lösung im Endeffekt tatsächlich die flexiblere. Du kannst ja aus deinem Wrapper auch ein COM-Objekt basteln *g*

Zitat:

Zitat von freak4fun
Ok, sorry ich schreib nichts mehr.

So war es nicht gemeint. Du solltest nur wissen, worüber du schreibst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr.
Seite 2 von 2     12   

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