Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2005
JMGR JMGR is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santa Cruz de Tenerife
Posts: 46
Poder: 0
JMGR Va por buen camino
Buenas....
Gracias por la respuesta, he estado mirando el ejemplo que trae Delphi del Chat y usa sendtext, pero claro para mandar una sola linea...a mi el problema me surge cuando quiero mandar un listado grande, es decir, muchas lineas...
que lo que es llegar, si que llegan, lo que pasa es que al mandarlo en tres paquetes el listbox se va actualizando con el contenido de cada paquete segun llega, pero sustitutyendo, no añadiendo, con lo cual lo que me aparece finalmente en el listbox es el listado correspondiente al ultimo paquete...En otras palabras, si los 3 paquetes contienen los nombres de las carpetas de la A->J, K->Q y R->Z, respectivamente, solo me aparecen las carpetas de la R a la Z, pero las anteriores no...

Si no encuentro una solucion rapido me decidire por ftp pero me quedo con la intriga de por qué pasa esto...
Muchas gracias y un saludo!
Juanma
Responder Con Cita
  #2  
Antiguo 14-11-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
La verdad es que no pasa nada extraño, sólo que no estás usando los eventos adequados, qué componente de sockets usas?

Prueba de usar el Indy TCP Client (si no lo estás usando).

También puedes hacer lo siguiente:
En el botón que ejecuta la acción (me imagino que será un botón) le metes ListBox.Clear;
En el evento onreceive le dices que te meta lo recibido en el listbox, pero sin eliminar lo que contiene.

He visto que para asignar el texto del list box usas ListBox.Items.Text, esto te substituye el texto por otro, es como la propiedad Text de un Edit. Prueba con poner ListBox.Items.Text := ListBox.Items.Text+socket.SendText(recibido); donde recibido es una variable de tipo string. Me entiendes?
__________________
l2prog.co.nr

Última edición por [Gunman] fecha: 14-11-2005 a las 21:10:26.
Responder Con Cita
  #3  
Antiguo 14-11-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
te lo escribo bien:
Evento onreceive:
Código Delphi [-]
  var
    Received: String;
  begin
    Socket.SendText(Received);
    ListBox.Items.Text := ListBox.Items.Text+Received;
  end;
__________________
l2prog.co.nr
Responder Con Cita
  #4  
Antiguo 14-11-2005
JMGR JMGR is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santa Cruz de Tenerife
Posts: 46
Poder: 0
JMGR Va por buen camino
Estoy usando los sockets que vienen en la paleta Internet, TClientSocket y TServerSocket

Otra cosa, ya habia probado a hacer lo que me sugieres pero me sigue pasando lo mismo...

Pongo aqui el codigo del cliente a ver si es que se me esta pasando algo...
Código Delphi [-]
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
 datos:widestring;
begin
 lbres.clear;
 datos:=socket.ReceiveText;
// showmessage(datos);
 lbres.Items.text:=lbres.Items.text+datos;
end;

Y aqui el del servidor...
Código Delphi [-]
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 i,j:integer;
 dir, orden, ruta, nom, ext:string;
begin
 orden:=socket.ReceiveText;
 memo1.lines.add(orden);
 if pos('lista',orden)=1 then
  begin
    ruta:=copy(orden,pos('!',orden)+1,(pos('¡',orden)-1)-pos('!',orden));
    nom:=copy(orden,pos('¡',orden)+1,(pos('.',orden)-1)-pos('¡',orden));
    ext:=copy(orden,pos('.',orden)+1,3);
    if nom='' then nom:='*';
    if ext='' then ext:='*';
    FindFile1.Path:=ruta;
    FindFile1.FileMask:=nom+'.'+ext;
    Lbres.items:=FindFile1.SearchForFiles;
    socket.SendText(lbres.Items.text);
  end

Findfile es un componente para buscar ficheros y los devuelve en una Stringlist...¿Tendrá algo que ver...?

Voy a intentarlo con el Indy TCPClient, que nunca he usado y por lo leido aqui deben ser mejores...

Última edición por JMGR fecha: 14-11-2005 a las 21:34:08. Razón: faltaba el procedure del server
Responder Con Cita
  #5  
Antiguo 14-11-2005
JMGR JMGR is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santa Cruz de Tenerife
Posts: 46
Poder: 0
JMGR Va por buen camino
A ver, creo que ya estoy cerca...
Resulta que si hago exactamente lo mismo pero con un memo en vez de un listbox funciona perfectamente...
Es decir, si pongo:
Código Delphi [-]
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
 datos:widestring;
begin
 lbres.clear;
 datos:=socket.ReceiveText;
// showmessage(datos);
 memo1.text:=memo1.text+datos;
 lbres.Items.text:=lbres.Items.text+datos;
end;

entonces, en el listbox me sigue pasando lo mismo, pero en el memo si que me aparece el listado completo...
lo único que se me ocurre es que el evento OnRead del socket cliente se dispara cada vez que llega un paquete, o sea, 3 veces en este caso, con una sola instrucción sendtext en el server, con lo que hace el clear del listbox, y por eso solo se me ve el ultimo listado...
Responder Con Cita
  #6  
Antiguo 14-11-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
quita el lbres.clear.
__________________
l2prog.co.nr
Responder Con Cita
  #7  
Antiguo 15-11-2005
JMGR JMGR is offline
Miembro
 
Registrado: jun 2003
Ubicación: Santa Cruz de Tenerife
Posts: 46
Poder: 0
JMGR Va por buen camino
Por fin!!!!!!

Al final me estaba liando yo solo....

Muchas gracias gunman no te imaginas el peso que me quitas de encima...

Ahora voy a ver cómo mandar un archivo del listado...ya dare el coñazo por aqui si tengo problemas....

1 saludo!
Juanma
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 17:09:25.


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