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.