AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Interface in einer Klasse

Ein Thema von Luckie · begonnen am 15. Feb 2006 · letzter Beitrag vom 15. Feb 2006
Antwort Antwort
Benutzerbild von Luckie
Luckie

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

Interface in einer Klasse

  Alt 15. Feb 2006, 11:02
Ich habe hier ein Interface und die dazu gehörige Typbibliothek. Jetzt wollte ich, um das ganze einfacher zu Hand haben in einen Klasse verpacken um dann eventuell später sogar eine Komponente daraus zu machen. Ober irgendwie habe ich mit der Klasse Probleme, dass in der Klasse das Interface nicht funktioniert.

Ich frage jetzt erstmal generell, ob es bei meinem Vorhaben etwas spezielles zu beachten gilt bzw. macht es überhaupt Sinn eine Typbibliothek noch mal in eine Klasse zu verpacken.

Das nächste Problem was ansteht wäre, wie man Eriegnisse des Interface in der Klasse kapselt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Interface in einer Klasse

  Alt 15. Feb 2006, 11:05
Lass doch Delphi die benötigte Wrapper-Klasse erzeugen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Interface in einer Klasse

  Alt 15. Feb 2006, 11:07
Und wie geht das? Oder meinst du die Datei, die Delphi erzeugt, wenn man eine Typbibliothek in sein Projekt importiert?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Interface in einer Klasse

  Alt 15. Feb 2006, 11:11
Ja, hier kannst du wahlweise auch nur die Wrapper-Unit erzeugen lassen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Interface in einer Klasse

  Alt 15. Feb 2006, 11:13
Mal gucken, ob ich dann mit dem Interface besser klarkomme. Danke schon mal für die Hilfe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Interface in einer Klasse

  Alt 15. Feb 2006, 11:34
Kommando zurück, das habe ich schon so gehabt.

OK, konkret sieht es so aus: Ich habe die Typbibliothek JabberCOM_TLB.pas (siehe Anhang, Link zur Interface Dokumentation: http://jabbercom.sourceforge.net/jsession.php3). Dann habe ich da die Klasse:
Delphi-Quellcode:
type
  TOnConnect = procedure(Sender: TObject) of object;
  TOnAuthError = procedure(Sender: TObject) of object;

  TDWJabberSession = class(TObject)
  private
    FJabberSession: TJabberSession;
    FServer: WideString;
    FUser: WideString;
    FPW: WideString;
    FResource: WideString;
    FPort: Integer;
    FConnected: Boolean;
    procedure SetServer(AServer: WideString);
    procedure SetUser(AUser: WideString);
    procedure SetPassword(APW: WideString);
    procedure SetResource(AResource: WideString);
    procedure SetPort(APort: Integer);
    function GetConnected: Boolean;
  public
    constructor Create(AServer: WideString; AUser: WideString; APassword: WideString;
      AResource: WideString; APort: Integer); overload;
    constructor Create; overload;
    destructor Destroy; override;
    property Server: WideString write SetServer;
    property User: WideString write SetUser;
    property Password: WideString write SetPassword;
    property Resource: WideString write SetResource;
    property Port: Integer write SetPort;
    procedure Connect;
    property IsConnected: Boolean read GetConnected;
  end;
Die Connect Methode sieht so aus:
Delphi-Quellcode:
procedure TDWJabberSession.Connect;
begin
  ShowMessage(FUser); // ist nicht leer und stimmt
  FJabberSession.DoConnect(False, jatPlainText);
end;
Das Problem ist, dass ich einen Authentifizierungsfehler bekomme. Ich vermute mal, dass die erforderlichen Parameter an das Interface nicht weitergegeben werden, obwohl in der ShowMessage die Variable richtig ausgegeben wird. Komisch ist allerdings, dass wenn ich den Mauszeiger ober FJabberSession halte nur die Ereignisse von TJabberSession erscheinen, nicht aber die Felder.

Ohne die Typbibliothek in eine Klasse zu kapseln geht es ohne weiteres. Aber das ist mir zu unübersichtlich irgendwie.
Angehängte Dateien
Dateityp: pas jabbercom_tlb_199.pas (258,5 KB, 5x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Interface in einer Klasse

  Alt 15. Feb 2006, 11:56
OK, vergesst es. War ein dummer Fehler in der Klasse. Das:
Delphi-Quellcode:
procedure TDWJabberSession.Connect;
begin
  FJabberSession.Server := FServer;
  FJabberSession.Username := FUser;
  FJabberSession.Password := FPW;
  FJabberSession.Resource := FResource;
  FJabberSession.Port := FPort;
  FJabberSession.DoConnect(False, jatPlainText);
end;
hat gefehlt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:08 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