Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
Problema con Indy/IRC

Vereis, uso este codigo que vi en una pagina para conectarme a un servidor irc:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
IdIRC1.Host := 'irc.irc-hispano.org';
  IdIRC1.Port := 6667;
  IdIRC1.Nickname := edit1.Text;//insert your nickname here
   IdIRC1.Username:='JoeBlogg';
    IdIRC1.AltNickname:=' JoeB';
    try
    idIRC1.Connect;   
  except
    if not idIRC1.Connected then
      begin
        MessageDlg('Error connecting to ' + idIRC1.Host, mtError,
[mbOK], 0);
        Exit;
      end;
  end;
  MessageDlg('Connected to ' + idIRC1.Host, mtInformation,
[mbOK], 0);
  button1.Enabled:=false;
end;
y me devuelve el mensaje de conectado, entonces, creo otro boton para unirme a un chanel con el codigo:
Código Delphi [-]
IdIRC1.Join ('#delphi')
pero no me conecta al canal(estoi dentro con mIRC, y no lo veo)
En que fallo (?)
Responder Con Cita
  #2  
Antiguo 24-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
umm :| abri y cerre delphi y se me soluciono :S
ahora lo que me esta costando es recibir la lista de usuarios en el canal...
Responder Con Cita
  #3  
Antiguo 26-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
=( no he conseguido listar la lista de usuarios en el canal, alguien me puede ayudar ?
Responder Con Cita
  #4  
Antiguo 26-01-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
El servidor IRC no te envia la lista a menos que se la pidas. El comando para ello es (si mi memoria no me falla):

NAMES #NombreDelCanal

La lista es un string con los nicks separados por espacios.
Responder Con Cita
  #5  
Antiguo 27-01-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Hola Gean, mira creo que para futuros problemas que vas a tener.

te va a servir mucho lo Siguiente. "RFC- del IRC" te dejo el linc con todos los Comandos Cliente /servidor. Etc.

saludos.

http://www.rfc-es.org/rfc/rfc1459-es.txt
Responder Con Cita
  #6  
Antiguo 31-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
Cita:
Empezado por DriverOp Ver Mensaje
El servidor IRC no te envia la lista a menos que se la pidas. El comando para ello es (si mi memoria no me falla):

NAMES #NombreDelCanal

La lista es un string con los nicks separados por espacios.
no me sirve ese comando
y sigo sin poder realizarlo :S
la verdad es que no se como hacerlo, solo kiero listar los usuarios de un chanel en un memo o un list, y no puedo T_T
Responder Con Cita
  #7  
Antiguo 31-01-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Cita:
Empezado por Gean Ver Mensaje
no me sirve ese comando
Lo lamento, a mi no me sirve que me digas que no te sirve. Me serviría si me dijeras por qué no te sirve.
Acabo de leer el RFC1459 y el comando NAMES es el que debes usar para lo que quieres. Si tienes problemas con esto me gustaría que me lo comentaras, en un mensaje de no menos de 100 palabras.
Responder Con Cita
  #8  
Antiguo 31-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
No, si eso lo he visto, pero te explico, el componente IdIRC no tiene ese procedimiento, o yo por lo menos no lo veo, como tendria que llamarlo? con RAW?
Responder Con Cita
  #9  
Antiguo 31-01-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Cita:
Empezado por Gean Ver Mensaje
No, si eso lo he visto, pero te explico, el componente IdIRC no tiene ese procedimiento, o yo por lo menos no lo veo, como tendria que llamarlo? con RAW?
Bueno!, vamos progresando, primera vez que mencionas que estás usando un idIRC. Veamos...

Leo la ayuda del componente en cuestión y encuentro un método llamado ListChannelNicknames y un evento llamado OnNicknamesListReceived y me pregunto si tendrá algo que ver con tu problema .
Responder Con Cita
  #10  
Antiguo 31-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
sii, tengo puesto esto:
Código Delphi [-]
procedure TForm2.IdIRC1NicknamesListReceived(ASender: TIdContext;
  const AChannel: string; ANicknameList: TStrings);
var
  i:integer;
begin
Usuarios.Items.Add('Nicknames in Channel: '+AChannel);
for i:= 0 to ANicknameList.Count-1 do begin
Usuarios.Items.add(ANicknameList.Strings[i]);
end;
end;
pero lo que me devuelve esto asi:
minick
minick = nombredelcanal: minick nick1 nick2...

como podria listar solamente minick en una linea
nick1 en otra linea
nick2 en otra linea...
es eso lo k kiero, si no puede ser en un listbox, en un memo
Responder Con Cita
  #11  
Antiguo 31-01-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Hombre... La lista ya está en un TStrings, entonces si la quieres en un TMemo basta con hacer:

Código Delphi [-]
Memo1.Lines.AddStrings(ANicknameList);

y listo .
Responder Con Cita
  #12  
Antiguo 31-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
claro, pero con ese codigo me devuelve lo que te he puesto en el mensaje anterior, lo que me gustaria es que se quedasen en lineas distintas en un memo, o preferiblemente en items diferentes en un list Box
Responder Con Cita
  #13  
Antiguo 31-01-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Cita:
Empezado por Gean Ver Mensaje
claro, pero con ese codigo me devuelve lo que te he puesto en el mensaje anterior, lo que me gustaria es que se quedasen en lineas distintas en un memo, o preferiblemente en items diferentes en un list Box
Ah, comprendo, parece que ANicknameList devuelve todos los nicks de un canal en una línea y en la siguiente línea los de otro canal y así sucesivamente.

Pues habrá que parsear el string donde están los nicks que te interesan, digo yo. Me parece extraño pero no tengo Indy10 para probar lo que dices. Como sea, este código te puede ayudar a parsear la cadena que tiene los nicks:

Código Delphi [-]
function GetToken(Cadena:string; Separador:char; Token:integer):string;
var
   Posicion:integer;
begin
     while Token > 1 do begin
       Delete(Cadena,1,Pos(Separador,Cadena));
       Dec(Token);
     end;
     Posicion:=Pos(Separador,Cadena);
     if Posicion=0 then
       Result:=cadena
     else
       Result:=Copy(Cadena,1,Posicion-Length(Separador));
end;

function GetTokenCount(Cadena:string; Separador:char):integer;
var
   Posicion:integer;
begin
  Posicion:=Pos(Separador,Cadena);
  Result:=1;
  if Cadena <> '' then
    begin
      if Posicion <> 0 then
        begin
        while Posicion <> 0 do
          begin
            Delete(Cadena,1,Posicion);
            Posicion:=Pos(Separador,Cadena);
            Inc(Result);
          end; // while
      end; // if
  end // if
    else Result:=0;
end;

procedure TForm2.IdIRC1NicknamesListReceived(ASender: TIdContext;
  const AChannel: string; ANicknameList: TStrings);
var
  Str: string;
  n: integer;
begin
  Str:=ANicknameList.Strings[1]; { Según el código es el string en la posición 1 el que te interesa }
  for n:=1 to GetTokenCount(Str,' ') do
    Memo1.Lines.Append(GetToken(Str,' ',n));
end;
En el TMemo obtendrás algo más que los nicks pero supongo que sabrás qué hacer con el resto.
Responder Con Cita
  #14  
Antiguo 31-01-2010
Gean Gean is offline
Miembro
 
Registrado: nov 2009
Posts: 33
Poder: 0
Gean Va por buen camino
=( muxas gracias por la paciencia k tienes conmigo, pero probando con ese codigo solo me sale mi nick... dejalo ya si kieres, haber si encuentro algo yo... :S
Responder Con Cita
  #15  
Antiguo 31-01-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Como gustes...
Responder Con Cita
  #16  
Antiguo 23-07-2010
genyus00 genyus00 is offline
Miembro
 
Registrado: jun 2010
Posts: 29
Poder: 0
genyus00 Va por buen camino
Talking Encontrastes solucion?

por si no.. o si alguien llega a este punto. utilicen:

para indy 9.00.19 delphi 7

procedure TSoundForm.IdIRC1Names(Sender: TObject; AUsers: TIdIRCUsers; AChannel: TIdIRCChannel);
var i: Integer;
begin
if Assigned(AUsers) then
begin
ListBox1.Clear;
for i := 0 to AUsers.Count - 1 do
ListBox1..Items.Add( AUsers.Items[i].Nick );
end;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema FTP Server con Indy jusnjosesch Internet 1 24-07-2008 03:05:02
Problema con indy y cadena con & sabato48 Internet 0 14-12-2007 00:00:33
Problema con indy 10 JULIPO Internet 0 04-11-2006 08:49:46
Problema con Thread e Indy diegofhernando Varios 3 30-03-2005 22:20:24
Que problema con las INDY!!!!! diegofhernando Internet 6 13-11-2003 20:13:37


La franja horaria es GMT +2. Ahora son las 18:57:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi