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)