FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Otro típico List Index Out Of Bounds
Wops!
Acudo a vosotros para pediros otra vez ayuda Estoy intentando que el servidor me enumere las conexiones clientes... he creado un ListBox llamado "lbClients", una clase llamada Client, y un objeto TList llamado Clients donde guardo la lista de Client.
Bien. El TList se crea en el evento OnCreate del form... y se rellena de la siguiente manera:
Cuando el cliente se desconecta, evidentemente, hay que quitarlo de en medio...
Y nos falta el método por el cual actualizo la lista de clientes...
Pues bien, gran parte de este código por no decir que prácticamente todo está cojido de un ejemplo de las indy que tenía por ahí y portado a Indy 10. El programa me falla específicamente cuando un cliente se desconecta y hago clic en uno que esté por debajo (se ha conectado posteriormente). En el OnClic del ListBox tengo el siguiente código:
Muchísimas gracias a todos... y un abrazo
__________________
:) |
#2
|
|||
|
|||
Exprecion
Clients.Delete(Client.ListLink); hace "ListLink" de todos los otros objetos "Client" invalidos (si ListLink <> Clients.Count-1). Usa Clients.Remove(Client); (o usa lbClients.Items.Objects) Última edición por rounin fecha: 10-10-2005 a las 19:39:53. |
#3
|
||||
|
||||
Aja, tengo claro que el fallo está en la parte Disconnect... pero supongo que no sé lo suficiente como para comprender tu post anterior. ¿Podría ser explicado de nuevo? Muchísimas gracias
__________________
:) |
#4
|
||||
|
||||
Saludos
Tratando de entender un poco, creo que rounin trta de decirte que cambie esta parte Clients.Delete(Client.ListLink); por Clients.Remove(Client); Haz la prueba, ya que nuestro amigo rouni tiene un poco de problema con el español. No comprendo bien el codigo(nunca he tratabajo con indy)
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#5
|
||||
|
||||
Funciona de maravillas!!!
MUUUUAKS!!! :P
__________________
:) |
#6
|
|||
|
|||
Saludos,
Perdoname por mi mal español. Trato explicar mas completo. Ahora usas dos listas para guardar TClient (lbClients.Items y Clients) y tratas sincronizarlas en varios lugares. En principle eso es possible, pero mejor o usar una lista, o sincronizar en solo una lugar (cada vez borrar una y rellenar). En cualquier caso no es buena idea guardar indices en lista (como ListLink), porque las operaciones Add, Remove, Insert cambian orden de objetos en lista. El mas simplemente manera en tu case es usar solo una lista (lbClientes.Items.Objects) y no sincronizar nada:
Última edición por rounin fecha: 10-10-2005 a las 21:35:57. |
#7
|
||||
|
||||
Muchísimas gracias por la explicacion.
Veo que ha puesto todo el foco sobre el TListBox en vez de el TList... podría funcionar. Muchísimas gracias, voy a probarlo De cualquier forma, si puede decirme su lenguaje nativo o uno que domine mejor que el castellano, podemos intentar cambiar a ese para ahorrar molestias
__________________
:) |
#8
|
||||
|
||||
Saludos
Cita:
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#9
|
||||
|
||||
Claro, hace tiempo que estoy en el foro...
Por eso tenía pensado poner mis mensajes en ambos lenguajes, así no falto a ella y obtengo una respuesta más precisa. Gracias por el toque, vtdeleon
__________________
:) |
#10
|
||||
|
||||
Vamos a hacer una pequeña aclaración en cuanto al lenguaje a utilizar en los foros.
Primeramente, es cierto que la guía de estilo implica que el lenguaje oficial de los foros es el español, y no creo que esto vaya a cambiar. Sin embargo, no será ésta la primera vez que se haga una excepción. Ya en ocasiones anteriores se han entablado hilos en portugués. Al forista rounin me gustaría expresarle dos cosas: 1. Siéntete bienvenido en estos foros, agradecemos toda la colaboración que has prestado desde tu ingreso. 2. De ser posible, trata de escribir tus mensajes en español. Pero si te enfrentas con situaciones que te sea difícil expresar, siéntete en libertad de hacerlo en inglés; varios moderadores estamos en la disposición, de ser necesario, de llevar a cabo una traducción de aquello que pueda no entenderse. // Saludos Última edición por roman fecha: 11-10-2005 a las 02:15:18. |
|
|
|