Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Delphi Jabber Client (https://www.delphipraxis.net/80285-delphi-jabber-client.html)

kingflo 6. Nov 2006 16:35


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

kingflo 6. Nov 2006 17:26

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?

Meflin 6. Nov 2006 17:40

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...


kingflo 7. Nov 2006 08:04

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:
 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;
die ganzen variablen (server, user port etc) sind auch alle richtig und ok

dann habe ich noch einige erreignisse geffült und einen Button Klick, der mir den status anzeigen sollte:

Delphi-Quellcode:
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;
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.

DP-Maintenance 7. Nov 2006 20:12

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?

thkerkmann 11. Nov 2006 18:48

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:
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;
dann ein OnConnect Event

Delphi-Quellcode:
procedure TfrmEMSout_main.JSessionConnect(Sender: TObject);
begin
  JSession.Available := true;
  SendJabberMessage(ExtractFilename(Application.Exename) + ' up and running');
end;
und zum Senden folgendes

Delphi-Quellcode:
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;
Ich hatte auch mal ein kleines Testprogramm gemacht.... das such ich nochmal und wenn ich es finde stell ich es hier dazu.

Gruss

Thomas.

[edit]
Attachment drangehängt....
[/edit]

Ack 28. Jul 2007 17:15

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:
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;
Ich konnte den Fehler bis zur Unit OleServer verfolgen.
Ab hier wird es mir allerdings zu hoch und ich steige nicht
mehr durch.
Delphi-Quellcode:
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;
Hat jemand ein ähnliches Problem oder vielleicht sogar eine Lösung bzw. Erklärung?
Danke schön :)

marabu 28. Jul 2007 18:13

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

Ack 28. Jul 2007 18:15

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.

marabu 28. Jul 2007 18:27

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 03:03 Uhr.
Seite 1 von 2  1 2      

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