Delphi Jabber Client
Hallo...
Ich habe ein riesiges Problem, und zwar brauche ich einen Jabber Client, den ich leider nicht hinbekomme, weil ich keine funktionierende Komponente finde. Ich hatte einmal TIpwXMPP aus dem IP Works package versucht, die leider in der delphi funktion nicht funktioniert. Ich kann mich dort zwar einloggen, aber keine nachrichten verschicken oder empfangen. JOPL aus dem exedus Projekt kann ich leider nicht benutzen, weil es ganz komisch verdrahtet ist, und das irgendwie nichts wird. Dann hatte ich mir die JabberCom.dll als Typenbileothek importiert, und habe jetzt auch unter ActiveX einige Jabber Komponenten, weiß aber leider nicht wie ich damit umgehen kann, weil ich dafür kein beispiel finde, und nicht weiß wie und wo ich den server, die userdaten usw eintragen kann und wie man damit nachrichten verschickt weiß ich auch nicht. Also es wäre echt super, wenn zufällig jemand nen jabber sample ätte, welches auch funktioniert, oder wenn jemand das schonmal gemacht hat und mir irgendwie helfen könnte. Ich hatte auch den MsgCmmunicator probiert, aber damit ging gar keine verbindung herzustellen. ich hoffe sehr, dass mir jemand helfen kann... mfg flo |
Re: Delphi Jabber Client
Arghh ich sehe gerade, ich habe voll in der falschen sparte geposted, es sollte eigentlich zu Internet etc... kann ein Moderator es vielleicht verschieben?
|
Re: Delphi Jabber Client
Die offizielle Jabber-Seite kennt 2 für Delphi ( http://www.jabber.org/software/libraries.shtml ):
http://jabbercom.sourceforge.net/ http://www.jabberstudio.org/cgi-bin/...i/exodus/jopl/ (sagtest du ja das ginge nicht... warum auch immer :roll: ) Wenn ersteres die erwähnte DLL ist, dann gibts dafür eine Dokumentation ( http://jabbercom.sourceforge.net/jabbercom.html ) und eine Demo ( http://prdownloads.sourceforge.net/j...OM_MFC-1.0.zip Ansonsten würde ich sagen siehts eher schlecht aus, da in dieser Liste keine weiteren sind, aber eins davon wirst du doch wohl zum laufen bringen... |
Re: Delphi Jabber Client
also JOPL gebe ich auf...
ich wollte es also mit JabberCom versuchen, also habe ich unter Projekt->Typenbibleothek importieren... dann die JabberCom.dll hinzugefügt, und dann JabberCom Libary (Version 2.3) installiert. Dann hatte ich einige neue komponenten in dem ActiveX tab. z.b auch TJabberSession. die habe ich dann auf das form gelegt, und erstmal folgendes gemacht:
Delphi-Quellcode:
die ganzen variablen (server, user port etc) sind auch alle richtig und ok
pw:=JabberParamList.Values['Password'];
user:=JabberParamList.Values['UserName']; server:=JabberParamList.Values['ServerName']; port:=strToInt(JabberParamList.Values['ServerPort']); stryykeUser:=JabberParamList.Values['StryykeUserName']; showMessage(user+' '+pw); JabberSession.Server:=server; JabberSession.Username:=user; JabberSession.Port:=port; JabberSession.Password:=pw; JabberSession.Connect; dann habe ich noch einige erreignisse geffült und einen Button Klick, der mir den status anzeigen sollte:
Delphi-Quellcode:
wie ihr an den kommentaren sehen könnt klappt es einfach nicht, und ich weiß nicht wieso... kann mir da jemand helfen? hat vielleicht schonmal jemand was mit JabberCom und delphi gemacht? denn das sample JabberCOM_MFC-1.0.zip ist leider C++ und ich habe hier nicht einmal das MS Visual Studio oder ähnliches um es mir anzusehen, und C++ kann ich auch nicht.
procedure TLoginForm.Button2Click(Sender: TObject);
begin showMessage(jabberSession.Status); // IST LEIDER IMMER LEER end; procedure TLoginForm.JabberSessionConnect(Sender: TObject); begin showMessage('try connect'); // KOMMT NICHT end; procedure TLoginForm.JabberSessionException(Sender: TObject); begin showMessage('error'); // KOMMT AUCH NICHT end; procedure TLoginForm.JabberSessionXML(ASender: TObject; Direction: Integer; const Text: WideString); begin showMessage(text); end; procedure TLoginForm.JabberSessionMessage(ASender: TObject; const Msg: IJabberMsg; const Tag: IXMLTag); begin showMessage(Msg.Body); // KOMMT SCHONMAL GAR NICHT end; |
DP-Maintenance
Dieses Thema wurde von "r_kerber" von "Windows API / MS.NET Framework API" nach "Internet / LAN / ASP.NET" verschoben.
Zitat: Arghh ich sehe gerade, ich habe voll in der falschen sparte geposted, es sollte eigentlich zu Internet etc... kann ein Moderator es vielleicht verschieben? |
Re: Delphi Jabber Client
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
also ich habe selber schon die JabberCom benutzt und es klappt wunderbar. Im OnCreate des Forms hab ich folgendes:
Delphi-Quellcode:
dann ein OnConnect Event
procedure TfrmEMSout_main.OnCreate(Sender: TObject);
try JSession.Server := msgrServer; JSession.Username := msgrUsername; JSession.Password := msgrPassword; JSession.Resource := ExtractFileName(Application.Exename); JSession.DoConnect(false, jatAuto); except on E: Exception do Logout(E.Message); end; end;
Delphi-Quellcode:
und zum Senden folgendes
procedure TfrmEMSout_main.JSessionConnect(Sender: TObject);
begin JSession.Available := true; SendJabberMessage(ExtractFilename(Application.Exename) + ' up and running'); end;
Delphi-Quellcode:
Ich hatte auch mal ein kleines Testprogramm gemacht.... das such ich nochmal und wenn ich es finde stell ich es hier dazu.
procedure TfrmEMSout_main.SendJabberMessage(const aMessage: string);
var mMsg: IJabberMsg; begin // send a message mMsg := JSession.CreateMsg; // index := Integer(lbUsers.Items.Objects[lbUsers.ItemIndex]); mMsg.ToJID := msgrSendTo; mMsg.FromJID := JSession.Username; mMsg.MsgType := jmtNormal; mMsg.Body := aMessage; JSession.SendMessage(mMsg); mMsg := nil; end; Gruss Thomas. [edit] Attachment drangehängt.... [/edit] |
Re: Delphi Jabber Client
:shock: Ich bekomme bei der Zuweisung des Servers eine Exception.
Habe mich eigentlich recht genau an den Quelltext meines Vorredners gehalten.
Delphi-Quellcode:
Ich konnte den Fehler bis zur Unit OleServer verfolgen.
procedure TForm1.Button1Click(Sender: TObject);
begin try JSession.Server := sServer; JSession.Username := sUser; JSession.Password := sPW; JSession.Resource := 'Delphi'; JSession.DoConnect(false, jatAuto); except on E: Exception do showmessage(E.Message); end; end; Ab hier wird es mir allerdings zu hoch und ich steige nicht mehr durch.
Delphi-Quellcode:
Hat jemand ein ähnliches Problem oder vielleicht sogar eine Lösung bzw. Erklärung?
function TOleServer.GetServer: IUnknown;
var HR: HResult; ErrorStr: string; begin case ConnectKind of ckNewInstance: Result := CreateComObject(FServerData^.ClassId); ckRunningInstance: begin HR := GetActiveObject(FServerData^.ClassId, nil, Result); if not Succeeded(HR) then begin ErrorStr := Format(sNoRunningObject, [ClassIDToProgID(FServerData^.ClassId), GuidToString(FServerData^.ClassId)]); raise EOleSysError.Create(ErrorStr, HR, 0); end; end; ckRunningOrNew: if not Succeeded(GetActiveObject(FServerData^.ClassId, nil, Result)) then Result := CreateComObject(FServerData^.ClassId); <--- hier wirft er die Exception ckRemote: {Highly inefficient: requires at least two round trips - GetClassObject + QI} Result := CreateRemoteComObject(RemoteMachineName, FServerData^.ClassID); end; end; Danke schön :) |
Re: Delphi Jabber Client
Hallo,
ist JSession der Name einer Komponente, welche du zur Entwurfszeit auf die Form gezogen hast oder hast du JSession selbst deklariert und vergessen zu instanzieren? Grüße vom marabu |
Re: Delphi Jabber Client
Nein JSession ist von Typ JabberSession (aus der Typenbibliothek der DLL) und wurde zur Entwurfszeit auf dem Formular erstellt.
Ich habe an der Komponente keine Eigenschaften geändert. |
Re: Delphi Jabber Client
Hast du schon mit einem fertigen Jabber Client überprüft, ob deine Jabber-Installation fehlerfrei ist?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 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