FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Recorrer un StringList
HOla:
Tengo un fichero .txt donde voy a tener una determinada cantidad de datos utiles y de marcas de comentarios(#). Es decir, el simbolo # representa algo asi como "//" en delphi; que lo que sigue a continuacion no me interesa para nada. Yo necesito recorrer ese fichero txt eliminando las lineas que empiecen con el simbolo "#". Para esto cree una variable de tipo StringList, almace el fihero dentro de ella con LoadFromFile, y luego recorro el ficehro haciendo lo sgte:
Mi problema surge a raiz de que cuando en el ficehro hay alguna linea que no empiece con "#" me salta una excepcion bastante molesta. La manipulo como muestro en el segmento de codigo que puse arriba.. solo que no me parece nada elegante ni limpio. Alguien puede sugerirme una idea mejor?? GRACIAS!! Lazaro Bustio Martinez. |
#2
|
||||
|
||||
Cita:
Adivinando, lo único que se me ocurre es que la tal excepción es un "Access Violation" que se presenta no cuando hay líneas que no empiecen con # sino cuando hay líneas en blanco en cuyo caso Script.Strings[i] es una cadena vacía por lo que no puedes acceder a su primer elemento. Si mis habilidades adivinatorias no van mal encaminadas entonces bastará con que compruebes que la línea no está en blanco antes de verificar la existencia de #:
// Saludos |
#3
|
||||
|
||||
Índice de cadena o de carácter inválido
¡Buen día a todos!
Además de lo dicho por Román, suponiendo que la expresión Cant sea al comenzar el ciclo For la cantidad total de cadenas de la lista, se corre el riesgo de que, después de eliminar una o más cadenas (Script.Delete), la variable I haga referencia a un índice ya no existente, lo cual también es causa de excepciones. Es decir, si inicialmente Cant = 10, la variable I irá de 0 a 9 en el ciclo For, siendo 9 el índice mayor. Pero al eliminar una cadena de la lista, el índice mayor se reduce en 1, y en ese caso una referencia como Script.Strings [ I] , donde I sea igual a 9, generará una excepción, ya que ahora el índice mayor será 8. En los casos donde se aplica un proceso iterativo a una lista de elementos, es recomendable utilizar un ciclo While o Repeat en lugar de un ciclo For, cuando el proceso iterativo puede cambiar la cantidad de elementos de dicha lista. Espero esto sea de utilidad, seguimos en contacto. Al González. Última edición por Al González fecha: 27-02-2005 a las 20:55:10. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|