Problemas para borrar una cadena de un Tstrings
Hola a todo el mundo.
Pues eso, tengo un problema para borrar una cadena en concreto dentro de un tstrings. Lo que hago es: Código Delphi [-] for I := 0 to Cod.Count-1 do begin ... Cod.Delete(I); ... end; El problema es que me da 'List index of bounds'. Da igual el valor que tenga I. ¿Alguien sabe lo que estoy haciendo mal? ¿Hay otra manera de hacerlo? Muchas gracias por su ayuda |
|
Delphi toma el valor de I cuando se inicia el bucle. Si borras uno o mas elementos de la tabla, cuando I llega al valor inicialmente capturado Cod.Count-1 ya estas fuera de la tabla. Por ejemplo, tienes una tabla de 25 elementos, al inicio del bucle pascal determina que debe contar desde 0 hasta 24, si borras algun elemento de la tabla da igual, la cuenta llegará a 24, y como has borrado un elemento, cuando intentes borrar o comprobar el elemento num. 24 estas fuera de rango.
Lo mejor en esos casos es hacer un bucle While o Until.
Asi compruebas el valor de Cod.Count en cada pasada |
Muchas gracias por respoder tan pronto.
He probado las dos formas, recorrer la lista al reves y poner un while en vez de un for, y las dos han funcionado. Una última pregunta ¿Que es más rápido el while o el for? |
Cita:
Cita:
|
Muchas gracia por todas sus respuestas.:D
|
La franja horaria es GMT +2. Ahora son las 05:31:41. |
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