Ver Mensaje Individual
  #6  
Antiguo 01-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Lo que veo un poquito raro es este codigo:
Código Delphi [-]
{ Assign the thread to it for ease in finding }
Client.Thread := AThread;

En el uso normal de objetos, en realidad estas asignando punteros, no estas creando el objeto TIdPeerThread. Yo lo haría así:

Código Delphi [-]
{ Assign the thread to it for ease in finding }
// se supone que Client.Thread está declarado de tipo TidPeerThread;
client.Thread := TidPeerThread.Create(AThread.Suspended);
Client.Thread.Assign(AThread); 
// ahora si estamos copiando todo el objeto TidPeerThread.

// Antes solo guardabas el puntero, y al ser variable local de OnConnect, se 
// pierde el objeto al salir de ese procedimiento.
El constructor de un objeto TidPeerThread necesita de un parametro boolean para crearse, no tengo ni idea del valor que hay que pasarle, así que le paso el valor que tenga AThread en su propiedad Suspended porque me parece intuitivo, pero ojo, no sé si es correcto.

AThread.Data := Client; le pasa exactametne lo mismo. Esto si Funciona, porque en realidad estas guardando la direccion de memoria donde se ha creado TsimpleClient, y al acceder a AThread.Data.Name, en realidad se está accediendo directamente al mismo objeto TsimpleClient.


Cita:
Empezado por Lepe
¿me he pasado 3 pueblos?
Puesto que utilizas la lista Clients, no es necesario añadir cada TsimpleClient al listbox.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita