FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Recorrido de un Tlistview
Hola a todos.
Tengo un problema con un Tlistview. He de rrecorrerlo y borrar de la lista los Items que tienen marcado la casilla de verificación. El problema que al hacerlo siempre me da un error. Creo que es porque lo recorro con un bucle for tal como el siguiente: procedure borramsgs; var i: integer; begin for i:=0 to Form1.list2.Items.Count-1 do begin if Form1.list2.Items[i].Checked then Form1.list2.Items[i].Delete; end; end; Cuando llega al Item 5 (por ejemplo) y lo borro, creo que ya el campo count del Tlistview.Items cambia y me transtoca el bucle for. Al menos esto es lo que creo. ¿Estoy equivocado? ¿El error me lo merezco por mal programador? ¿Saldré alguna vez de este "bucle infinito de desesperanza"? ¿Alguien me sacará de la oscuridad para llevarme de nuevo a la luz? Gracias por adelantado. |
#2
|
|||
|
|||
bueno, creo que te respondes tu mismo. En lugar de un bucle for, utiliza un bucle while
Código:
procedure borramsgs; var i: integer; begin i := 0; while i <= Form1.list2.Items.Count-1 do begin if Form1.list2.Items[i].Checked then Form1.list2.Items[i].Delete; end; end; |
#3
|
||||
|
||||
Echo de menos el smilies aquel que salía con la cara colorada.
Es que cuando uno se encabezona con algo... Muchas gracias cadetill por tu pronta respuesta, era SIMPLEMENTE es. |
#4
|
|||
|
|||
Cita:
Lo único que cambia algo el formato |
#5
|
|||
|
|||
Lo lógico de un bucle es recorrerlo de menor a mayor, pero cuando tenermos que recorrer una lista en la que se van a borrar (parcial o totalmente) lo que se debe hacer es recorrer me mayor a menor.
procedure borramsgs; var i: integer; begin for i:=Form1.list2.Items.Count-1 downto 0 do if Form1.list2.Items[i].Checked then Form1.list2.Items[i].Delete; end; |
#6
|
||||
|
||||
Gracias Julà T.
Otra solución sencilla y elegante. No os podéis imaginar la de cosas que intenté con el dichoso bucle For.... __________________ Francisco J. Flores |
|
|
|