Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ICQ Client Problem (https://www.delphipraxis.net/140673-icq-client-problem.html)

Allstar 23. Sep 2009 14:17


ICQ Client Problem
 
Hi!

Bin grad dabei einen ICQ CLient zu schreiben. Mache das mit dem TICQLib von hier:
http://www.delphipraxis.net/internal....php?p=1065799

Meine Frage: Wie kann ich zum Beispiel nach Mitgliedern suchen lassen, die aus Deutschland kommen?
Also wenn ich doch zum Beispiel nach Usern mit einer bestimmten UIN suche, dann benutze ich SearchbyUIN; bei Email-Adresse nach SearchByMail... Aber wie mache ich das, wenn ich nur das Suchkriterium Land=Deutschland habe?
Würde dann gerne die 10 erst gefundenen UINs in einer StringList speichern...

Vielen Dank schonmal ;)

ghost007 23. Sep 2009 14:27

Re: ICQ Client Problem
 
Zitat:

Zitat von Allstar
Hi!

Bin grad dabei einen ICQ CLient zu schreiben. Mache das mit dem TICQLib von hier:
http://www.delphipraxis.net/internal....php?p=1065799

Meine Frage: Wie kann ich zum Beispiel nach Mitgliedern suchen lassen, die aus Deutschland kommen?
Also wenn ich doch zum Beispiel nach Usern mit einer bestimmten UIN suche, dann benutze ich SearchbyUIN; bei Email-Adresse nach SearchByMail... Aber wie mache ich das, wenn ich nur das Suchkriterium Land=Deutschland habe?
Würde dann gerne die 10 erst gefundenen UINs in einer StringList speichern...

Vielen Dank schonmal ;)

Hi,
ich bin jetzt zwar nicht mit der TICQLib vertraut, aber schau dir doch einfach mal den code der SearchByUIN und SearchByMail funktionen an, evtl siehst du was du modifizieren musst um eine SearchByCountry funktion zu schreiben.

hadschi92 23. Sep 2009 14:44

Re: ICQ Client Problem
 
Ich denke dass du damit nach dem Land suchen kannst:

Delphi-Quellcode:
TICQClient.SearchWhitePages(const FirstName, LastName, NickName, Email: {$IFDEF VER200}RawByteString{$ELSE}string{$ENDIF}; MinAge, MaxAge: Word;
  Gender: Byte; const Language, City, Country, Company, Department, Position, Occupation,
  Organization, OrganKeyWords, PastAffiliation, AffiKeyWords, KeyWord: {$IFDEF VER200}RawByteString{$ELSE}string{$ENDIF}; Online: Boolean);
Als Antwort bekommst du dann eine OnUserFound-Benachrichtigung.

Allstar 23. Sep 2009 15:23

Re: ICQ Client Problem
 
Zitat:

Zitat von hadschi92
Ich denke dass du damit nach dem Land suchen kannst:

Delphi-Quellcode:
TICQClient.SearchWhitePages(const FirstName, LastName, NickName, Email: {$IFDEF VER200}RawByteString{$ELSE}string{$ENDIF}; MinAge, MaxAge: Word;
  Gender: Byte; const Language, City, Country, Company, Department, Position, Occupation,
  Organization, OrganKeyWords, PastAffiliation, AffiKeyWords, KeyWord: {$IFDEF VER200}RawByteString{$ELSE}string{$ENDIF}; Online: Boolean);
Als Antwort bekommst du dann eine OnUserFound-Benachrichtigung.

Also ich will ja nicht heruasfinden in welchem Land irgendein User lebt, sondern ich möchte User finden, die in einem bestimmten Land leben. Oder hab ich diese Funktion falsch verstanden?^^


Zitat:

Zitat von ghost007
Hi,
ich bin jetzt zwar nicht mit der TICQLib vertraut, aber schau dir doch einfach mal den code der SearchByUIN und SearchByMail funktionen an, evtl siehst du was du modifizieren musst um eine SearchByCountry funktion zu schreiben.

Hmm da hätte ich irgendwie auch von selbst drauf kommen können. naja manchmal ist die Antwort so einfach dass man sie selbst nicht mitbekommt :D Aber ich bin mir nicht sicher wie ich das machen kann... Ich hoffe ihr könnt mir helfen:

Code von SearchbyMail, SearchbyName, SearchbyUIN:
Delphi-Quellcode:
{Searches user by Mail}
procedure TICQClient.SearchByMail(const Email: String);
var
  pkt: TRawPkt;
begin
  if not LoggedIn then Exit;
  CreateCLI_SEARCHBYMAIL(@pkt, FLUIN, Email, FSeq, FSeq2);
  FSock.SendData(pkt, pkt.Len);
end;

{Searches user by UIN}
procedure TICQClient.SearchByUIN(UIN: LongWord);
var
  pkt: TRawPkt;
begin
  if not LoggedIn then Exit;
  CreateCLI_SEARCHBYUIN(@pkt, FLUIN, UIN, FSeq, FSeq2);
  FSock.SendData(pkt, pkt.Len);
end;

{Searches user by Name and other data}
procedure TICQClient.SearchByName(const FirstName, LastName, NickName, Email: String);
var
  pkt: TRawPkt;
begin
  if not LoggedIn then Exit;
  CreateCLI_SEARCHBYNAME(@pkt, FLUIN, FirstName, LastName, NickName, Email, FSeq, FSeq2);
  FSock.SendData(pkt, pkt.Len);
end;
Eine SearchByCompany Procedure müsst dann so aussehen, oder?:

Delphi-Quellcode:
procedure TICQClient.SearchByCompany(const Company: String);
var
   pkt: TRawPkt;
begin
   if not LoggedIn then Exit;
   CreateCLI_SEARCHBYCOMPANY(@pkt, FLUIN, Company, FSeq, Fseq2);
   FSock.SendData(pkt, pkt.Len);
end;
So hab keeeeeeine Ahnung ob das stimmt ;) Hab mir das gerade aus den Fingern gesogen :P Aber woher weiß ich denn wie ich das richtig abändern soll, was für Daten ICQ erwartet, wenn ich anfange mit ihm zu kommunizieren? Hoffe da kann mir jemand helfen ;)
Danke für die bisherigen Antworten!

Allstar 29. Sep 2009 20:55

Re: ICQ Client Problem
 
Keiner eine idee?^^

Zacherl 29. Sep 2009 21:12

Re: ICQ Client Problem
 
Musst mal mit WireShark sniffen, wie der standard ICQ Client das macht. Dann kannst du dir das entsprechende Paket zusammenbasteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 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