Pascal/Turbo Pascal - seguimos con los barcos, ahora ficheros

 
Vista:

seguimos con los barcos, ahora ficheros

Publicado por javi (15 intervenciones) el 20/12/2003 19:54:40
Bueno ya sta casi completo el juego de los barcos, me falta la parte de los ficheros, con estadísticas y eso, pero tengo un problema os cuento, el fichero es un archivo que almacena un array[1..64] of tcelda, y cada celda es un registro con dos campos, el numero de bombas lanzadas y los aciertos de esa celda. Bueno he conseguido que una vez se dispare a una celda, actualice la celda del array que le corresponde pero luego al intentar grabarlo en el fichero donde almacenarlo, pues no parece hacer nada, ya que imprimo el contenido del fichero pero sigue siendo el mismo después de haber hecho el cambio y haberlo escrito en el fichero.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:seguimos con los barcos, ahora ficheros

Publicado por Diego Romero (786 intervenciones) el 20/12/2003 23:43:06
Reproduce el código fuente de la parte donde haces la grabación y la lectura del archivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seguimos con los barcos, ahora ficheros

Publicado por javi (15 intervenciones) el 21/12/2003 17:15:38
Marchando...

procedure modificar(var f:tfichero;var arr:tarraycelda);
var
celda,bombas,aciertos,i:byte;
aux:tarraycelda;
begin
writeln;
writeln('Dame la celda (1-5)');
readln(celda);
Writeln('Ahora el n£mero de Bombas lanzadas a la celda ',celda);
readln(bombas);
writeln('Y los aciertos');
readln(aciertos);
reset(f);
read(f,aux);
for i:=1 to 5 do
begin
if i=celda then
begin
arr[celda].numBombas:=bombas;
arr[celda].numAciertos:=aciertos
end
else arr[i]:=aux[i]
end;
write(f,arr);
close(f);
end;

Esto de los ficheros no se me da bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seguimos con los barcos, ahora ficheros

Publicado por Diego Romero (786 intervenciones) el 21/12/2003 18:10:23
Olvidas retroceder el puntero del archivo.
cuando haces el Read(F, Aux); lees el primer registro (número 0) pero el puntero del archivo luego de la lectura se para en el segundo registro (número 1), operas con ese registro y luego haces write(F, Arr); como el puntero del archivo está en el registro 1 estas escribiendo en ese registro y por supuesto el cero permanece sin modificar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seguimos con los barcos, ahora ficheros

Publicado por javi (15 intervenciones) el 21/12/2003 21:25:44
Te refieres a que tengo que utilizar el seek ese?pero para que?, a ver si yo leo del archivo y meto en una variable el array que hay y luego lo copio tal cual en otro, pero modificando justo la celda que quiero, si luego escribo este último array que contiene la modificación y los datos anteriores en las demás posiciones, por que tengo que utilizar el seek?no lo entiendo, sigo sin ver en que falla esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seguimos con los barcos, ahora ficheros

Publicado por javi (15 intervenciones) el 22/12/2003 11:56:03
Ya sta ya me he enterao de por que fallaba gracias!!!no me daba cuenta que al leer, el puntero se situa en la posición siguiente y al escribir escribía detrás del primer array, por lo que al mostrar el contenido, mostraba el del primer array sin modificar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:seguimos con los barcos, ahora ficheros

Publicado por Diego Romero (786 intervenciones) el 22/12/2003 18:44:50
Exactamente, amigo, eso es precisamente lo que te estaba diciendo y sí, tenías que hacer uso del Seek() para retroceder el puntero DEL ARCHIVO, no del array.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar