UTNianos

Versión completa: algoritmos - actualizar archivos
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas noches, queria saber si es necesario actualizar todo el registro de un archivo cuando SOLO necesito actualizar UN dato de ese registro.
Es decir:

Registro del Archivo X:

IDCliente Saldo CantDeCompras

Si solo necesito actualizar "CantDeCompras" tengo que regrabar los 3 campos?? o solo puedo regrabar el campo necesario (RegArch.CantDeCompars)?

Muchas gracias!!!!
Saludos
todo el registro, sin embargo solo modificas el que queres actualizar
o sea, tengo que pasarle de nuevo todos los campos viejos, salvo el nuevo valor??
es decir:

leo el registro
RegArc.IDCliente <---- RegArc.IDCliente
RegArc.Saldo <---- RegArc.Saldo
RegArc.CantDeCompras <---- CantDeComprasNuevo
seek (Archivo, filepos(archivo)-1)
escribo el registro RegArc

Seria asi??
Muchas gracias!
Saludos
justo hoy estaba con ese mismo problema! y si, hay que hacerlo asi, te muestro como lo hice:

while (nroCli<>0) do begin
seek(arch,0); //pone el puntero al principio para que no haya problemas
while (nroCli<>reg.nroTarjeta) do begin //aca busca el cliente por numero de tarjeta, no para hasta encontrarlo
read(arch,reg);
end;
writeln('Importe');
readln(importe);
puntos:=((trunc(importe)) div 7); //esto pasa el importe a numero entero y lo divide x 7 para sacar los puntos
seek(arch,filepos(arch)-1); //pone el puntero en la posicion correcta
reg.ptosAcum:=reg.ptosAcum+puntos; //acumula los puntos
write(arch,reg); //finalmente actualiza el archivo


obviamente es otro ejemplo distinto, pero la idea es la misma
mira, no es necesario que cargues todo. supongamos que solo tenes que actualizar el importe de algo. vos lees el archivo:
read (arch,reg);
y tenes en tu varible de registros:
reg.nombre
reg.algo
reg.otro
reg.importe

lo unico que haces es modificar el importe
reg.importe:=nuevoImporte;

y luego actualizas
write(arch,reg);

de mas esta decir que al leer una posicion del archivo, mueve el puntero, por lo que si no queres perder el registro que le sigue (y no queres !!) tenes que hacer un seek a donde estabas.

saludos
ahh, ok, entonces no hace falta escribir todos los datos de vuelta!, eso era lo que necesitaba saber jajaja

Gracias!!
URLs de referencia