FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ficheros con eof
hola amigos!!
ya estoy aki otra vez!! para daros un poko la lata!!jeejeje weno mi problemilla es el siguiente: estoy haciendo un programilla de traspasos de un programa a otro. el 'programa origen' me genera un TXT q recorro y voy introduciendo los datos campo a campo. hasta aki todo korrecto!!! peroooo..... cual es mi sorpresa cuando voy a mirar los registros y me pone siempre uno menos!!!!! le he puesto un while not EOF(F) do pero resulta q en la ultima linea, m ha parecido entender, mete el EOF y por tanto la linea no m la pilla por contenerlo!!! he ido al TXT y he introducido una linea en blanco(un return) y entonces si m lo pilla!!!! komo hago para q m pille el EOF sin tener q editar el fichero?? muxas gracias a tod@s!!! un saludo!!! |
#2
|
|||
|
|||
Como haces la introduccion de datos en el fichero, con un write o un writeln?
Si el problema es el retorno de carro y utilizas write, cambialo a writeln a ver que tal Espero te sirva |
#3
|
|||
|
|||
HOLA!
yo no hago la introduccion del fichero. la hace el 'programa origen' y realmente no se como la hace! yo parto del fichero TXT generado por este programa y a partir de él, lo leo linea a linea (ReadLn) y voy introduciendo campo a campo. alguna idea? se me ha ocurrido q komo no le falta esa linea ponerla yo! algo asi [list=a] if FileExists('C:\Ofipro\GesProEasy\Emp1\EXPORTA\articulos.Txt') then begin AssignFile(F, 'C:\Ofipro\GesProEasy\Emp1\EXPORTA\articulos.Txt'); {$I-} //abro el archivo Reset(F); {$I+} //leo la linea ReadLn(F,c); while not Eof(F) do begin ReadLn(F,c); end; if eof(F) then begin writeln(F, #13); end; end;[/list=a] pero no me deja escribir xq no esta en modo escritura!!! he probado varias cosas pero nada |
#4
|
|||
|
|||
para escribir en un fichero ya existente, en lugar de reset, utiliza append
de toda manera, tendria que funcionarte en bucle while not eof(F) do la verdad es que me tiene extrañado. He hecho la pueba de no poner un salto de linea en la ultima linea de un fichero de texto y.... me lo ha leido todo perfectamente |
#5
|
||||
|
||||
Estoy seguro que el problema no está en el archivo o en delphi. Si no hay un salto de línea antes del fin de archivo no pasa nada. Veo que lees una línea antes de entrar al while que sugeris, que tampoco tiene sentido (aunque no creo que sea el origen del error, por supuesto) y que de hecho podria ocasionar errores, ya que el archivo podria existir y estar vacio.
Solo para que lo revises, la construcción debiera ser algo como: Código:
if FileExists(NombreArchivo) Then Begin AssignFile(f, NombreArchivo); Reset(f); try while not eof(f) do Begin Readln(f, s); ProcesarLaCadena(s); End; finally Close(f); // Importante: aunque hayan errores, siempre liberará los recursos end; End;
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
|||
|
|||
hola otra vez!!
asias a los dos(cadetill y jachguate) x ayudarm m ha servido de muxo.... d exo ya esta resuelto!! cadetill estaba 'mosca' y yo tambien xq no m leia la ultima linea!! resulta q yo hacia esto: Reset(F); //leia la linea ReadLn(F, c) while not EOF(F) do begin //hacia las operaciones necesarias(lectura del TXT y grabar en cada campo los datos) //leia linea ReadLn(F, c) end; leia la linea antes d entrar xq calculaba su longitud una vez entraba. Perooo... como dijo jachguate puse la linea dentro del while justo antes d calcular su longitud y....... voilá!!! M LEYO TODO !!!! ahora keda asi: Reset(F); while not EOF(F) do begin //leo la linea ReadLn(F, c) //hacia las operaciones necesarias(lectura del TXT y grabar en cada campo los datos) end; pero no logro entender xq, lo sabeis?asias a los dos como he dixo antes!! |
#7
|
|||
|
|||
aaa se me olvidaba!!jejjeeje!!soy un poko pesao ademas d desmemoriado!
resulta q el primer caracter q m lee del TXT en cuestion, es el caracter #0. he editado el TXT y no tiene ningun caracter al principio, incluso lo he llevado al word para ver los caracteres ocultos por si las moscas ... pero todo parece estar bien!! puede ser q sea la marca de principio de fichero?? he sacada la cadena por pantalla y empieza asi: '1','nsb', ....... etc no veo q puede estar mal! weno asias x todo!! |
#8
|
|||
|
|||
Cita:
PD: me alegro de que hayas solucionado el problema |
#9
|
|||
|
|||
hola !!!
gasias x todo, pero lo del caracter #0 al principio... sabes si es principio d fichero¿? xq lo pone? lo siento si soy muy pregunton un saludo y salud!!! PD: asias otra vez! |
#10
|
|||
|
|||
Ese caracter lo ha puesto el programa que ha generado el fichero txt. No significa que sea principio de fichero, sencillamente que el programa "creador de ficheros" lo escribe al generarlos
|
|
|
|