UTNianos

Versión completa: Actualizar lineas de un archivo
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Tengo una duda, supongamos que me piden que lea un archivo y que actualize algunas de las lineas.

Mi duda es, cuando yo leo con read(arch,reg), el puntero se avanza a la siguiente fila del archivo.
¿Para actualizar la misma linea que lei, tengo que volver una posicion atras?
Según lo que entendí, y el blog del profesor pablo, no hace falta leer el registro...

Deberías hacer un seek para quedar en la posicion a actualizar y despues el simbolo de escritura con los datos nuevos a colocar en el archivo.

(díganme si es correcto lo que digo, no estoy 100% seguro)
Claro, eso si ya hubieras procesado el archivo y hubieses guardado la posicion de las lineas que necesitan actualizarse.
Mi duda es si estamos barriendo el archivo secuencialmente, y te piden que segun algun criterio actualices en ese momento!
Exactamente lo que vos decis! Marta en su tiempo explicaba que leias y se corria el "puntero" entonces para actualizar volvias a la posición.
Perfecto, entonces deberia hacer algo asi, no? (suponiendo reg modificado con nuevos valores)
seek(arch, filepos(arch)-1)
write(arch,reg)

Muchas gracias!
Claro. Igual no se yo hubiera usado un n contador jajaj no me avive de ese file pos. Si vos actualizas la linea enterera "reg" esta bien, sino tenes que hacer la asignacion en el campo correspondiente
(15-02-2013 17:31)nextway escribió: [ -> ]Perfecto, entonces deberia hacer algo asi, no? (suponiendo reg modificado con nuevos valores)
seek(arch, filepos(arch)-1)
write(arch,reg)

Muchas gracias!

No sé si es necesaria la aclaración, pero ahí estarías actualizando la posición actual que leiste. A lo cual esa actualización es aplicable a tiempo real de lectura, por así decirlo.

Si no es la posición actual, pero sí es una posición única y predecible (es decir, tenés un archivo de 1000 compras, con un campo IdCompra que va del 1 al 999, si necesitás actualizar la compra de IdCompra = 20, directamente te parás en ese registro y actualizás)
URLs de referencia