![]() |
Fin de archivo leyendo archivos de texto
Estimados todos.
Hace dias que vengo con un problema y no puedo darme cuenta donde esta y supongo que 4 ojos ;) veran mucho mas que yo. Resulta que tengo que leer y procesar varios archivos de texto que se generan automaticamente y son enviados desde equipos medicos hacia una carpeta compartida. Mi sistema los lee e inserta los resultados en el sistema. Estos archivos pueden contener 1, 2 o n lineas con un formato especifico pero con contenido muy diferente segun el equipo que los envia. Mi problema resulta al leer el contenido de los archivos segun el siguiente codigo.
Necesito hacer ese corte de control en el medio porque puedo tener varias lineas para el mismo paciente, el problema real que tengo es que cuando ejecuta el comando READLN, y x ej. el contenido es solo una linea, al entrar al segundo while y pregunta por eof(), ya llego al final, entonces no me procesa nada, lo mismo cuando entro en el segundo while cuando contiene mas de una linea, al leer la ultima linea del archivo, tambien eof() resulta true y por eso no me la procesa. La verdad hace dias que estoy tratando de resolver esto y siempre me pierde la ultima linea. Hay otra manera de usar readln() u otra funcion que me devuelva fin de archivo cuando intengo seguir? Gracias mil a quien pueda responder. Saludos Leo |
¿Conoces la sentencia repeat..until?
|
Hola duilioisola, gracias por responder.
Si la conocia, y antes de postear la pregunta, tambien la habia probado y no me conformaba. Igual lo pude solucionar cargardo el archivo de texto en un stringlist y procesando todas las lineas del mismo. Muchas gracias. Saludos |
Hola Ibidi.
Sólo como comentario, se puede efectuar con ambas estructuras de repetición. Por ejemplo, los siguientes códigos son equivalentes:
La diferencia es que en el ciclo while se comprueba la condición al ingresar, de allí que sea necesaria la lectura previa. Con repeat es innecesaria la lectura previa, pero hay que verificar la condición antes de ejecutar la acción, de otro modo la ejecutaría al menos una vez. Lo mismo sucedería al leer el elemento posterior al último que satisfizo la condición. De todos modos, creo que la solución mas simple es la que usaste (TStringList). Saludos :) |
La franja horaria es GMT +2. Ahora son las 20:45:41. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi