theodracoden
Messages postés17Date d'inscriptionlundi 23 août 2004StatutMembreDernière intervention27 août 2005
-
20 avril 2005 à 12:02
coussimac
Messages postés38Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 4 juillet 2017
-
2 déc. 2005 à 01:42
Bonjour à tous, voilà, je suis en train de programmer un client IRC. Pour cela, j'utilise le composant IdIrc de indy 9.
J'ariive donc a me connecter a un serveur et a rejoindre un cannal, le probleme, ou plutot les problemes sont les suivants :
- Je voudrais afficher les réponses des serveurs et des cannaux dans un
Tmemo, pour cela, j'utilise : memo1.lines.add(idirc1.readln) mais ça ne
m'affiche qu'une ou 2 lignes de réponse alors que je devrais en avoir
une vaingtaine...
- Je voudrais aussi mettre la liste des utilisateurs d'un cannal dans une Tlistbox et là encore je n'y arrive pas...
- Je n'arrive pas non plus a envoyer du texte sur le cannal
- Enfin, je n'arrive pas a recevoir le texte dans mon Tmemo (il doit
falloir "surveiller" en permanence le serveur pour pouvoir recevoir les
messages mais je ne sais pas comment faire)
Voila ^^ si vous avez une ou plusieurs réponses a mes questions, n'hésitez pas.
PS : j'ai deja cherché sur google et pas mal de forums, je n'ai rien trouvé...
Dreuteu
Messages postés44Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention28 février 2006 25 avril 2005 à 17:01
Pour envoyer du texte, si je me souviens bien, c'est ircclient.WriteLn('message');, mais... je suis loin d'en etre certain a 100%
Ensuite, pour surveiller le channel, ca doit avoir un rapport avec Intercept ou IOHandler (ou encore ReadTimeOut, mais je ne suis pas du tout un specialiste de l'IRC...)
aiglon3
Messages postés10Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention24 novembre 2005 24 nov. 2005 à 04:46
Salut, pour ce qui est la liste des utilisateurs dans le ListBox, voici la procedure:
Il faut Créer TListBox (ici List) et TidIrc (ici Irc)
Procedure LaListe;
Var Cannal:TidIrcChannel;
nom:String;
t:Integer;
Begin cannal:= Irc.Channels.Get('#'+LeCannal);
if cannal.Names.Count<1 then exit;
List.Clear;
for t: =0 to cannal.Names.Count-1 do begin nom:= cannal.Names[t];
if irc.IsOp(nom) =True then List.Items.Add([mailto:'@'+nom '@'+nom]) else
if irc.IsVoice(nom) = True then List.Items.Add([mailto:'@'+nom '+'+nom]) else
List.Items.Add(mm);
end;
end;
J'ai fait un IRC client complet, si vous avez des questions écrivez-moi.
aiglon3
Messages postés10Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention24 novembre 2005 1 déc. 2005 à 04:56
Bien, voici coment j'ai créer ma propre procédure pour tester si un utilisateur est OP...:
RichEdit1 est la liste du statut de connection ( au départ )
Var OpList:array[1..250] of string;
AOpList:Integer;
Function CheckOP(m:String):Boolean;
var t:Integer;
begin CheckOp:= False;
if aoplist=0 then exit;
for t:=1 to AOpList do
begin
if m =OPList[t] then
begin CheckOp:= True;
exit;
end;
end; end;
Procedure Tfchat.GetOP;
var t,i:Integer;
ligne,mot:String;
lettre:String[1];
mode:Byte;
begin GetOk: =True;
aoplist:= 0; mode:=0;
for t:=0 to RichEdit1.lines.Count-1 do
begin
ligne: =RichEdit1.Lines[t];
if (pos('JOIN #',AnsiUpperCase(ligne))>0) or (pos('JOIN :#',AnsiUpperCase(ligne))>0) then mode:= 1;
mot:='';
if mode>0 then
begin
for i: =1 to length(ligne) do
begin lettre:= copy(ligne,i,1);
if [mailto:lettre='@' lettre='@'] then mode:=2 else
if (lettre=' ') and (mode=2) then
begin
inc(aoplist);
OpList[aoplist]: =mot;
mot:= '';
mode:=1;
end else
if ((lettre =' ') or (lettre= ':')) and (mode=1) then
begin
mot: ='';
mode:= 1;
end else mot: =Mot+lettre;
end; end; if mode= 2 then
begin
inc(aoplist);
OpList[aoplist]: =mot;
mot:='';
end; end;
Il reste a le modifier pour ajouter les "+", les "%" et les "&"
N'oublier pas de mettre a jour la liste "OpList[]" quand ya un nouveau OP et aussi quand il y en a un qui sort