Pascal/Turbo Pascal - Modificar campos fichero

 
Vista:

Modificar campos fichero

Publicado por Jorge_K (1 intervención) el 03/01/2007 08:54:31
Hola.Tengo un fichero binario de datos con distintos campos como titulo,interprete,etc y quiero que mediante la opcion de un menú,al dar a la opcion modificar ,te deje modificar cualquier registro del fichero.Pero lo que me hace es borrarme todo el registro,no se me hace cosas muy raras.Alguien me puede echar una mano???

Procedure Modificar_Cancion(VAR datosC:tipo_fich_datos_C;VAR datosA:tipo_fich_datos_A);
VAR
posicionC:longint;
posicionA:longint;
registroC:tipo_reg_logico_C;
registroA:tipo_reg_logico_A;
AlbumCancion:tipo_album_A;
BEGIN
Buscar_Titulo(datosC,PorPantallaC,PorPantallaA,Existe,TituloCancion);
IF Existe THEN
BEGIN
(*me devuelve la posicion en el fichero datosC del interprete que quiero modificar*)
posicionC:=Buscar_Interprete(datosC,PorPantallaC);
seek(datosC,posicionC);
read(datosC,registroC);
AlbumCancion:=registroC.album;
(*me devuelve la posicion en el fichero datosA del album que quiero modificar*)
posicionA:=Buscar_Album_Pos(datosA,PorPantallaA,AlbumCancion);
Modificar_Reg_Cancion(datosC,datosA,posicionC,posicionA);
END;
END;

Procedure Modificar_Reg_Cancion(VAR datosC:tipo_fich_datos_C;VAR datosA:tipo_fich_datos_A;posicionC:longint;posicionA:longint);
VAR
registroC:tipo_reg_logico_C;
registroAuxC:tipo_reg_logico_C;
registroA:tipo_reg_logico_A;
opcion:integer;
i:integer;
TituloNuevo:tipo......
BEGIN
REPEAT
clrscr;
Writeln('¨Que campo deseas modificar?');
Writeln('1.Titulo');
Writeln('2.Interprete');
............
Writeln('12.No deseo modificar ningun dato mas datos');
Readln(opcion);
CASE opcion OF
1:BEGIN
Writeln('Introduce el nuevo titulo');
Readln(TituloNuevo);
FOR i:=length(TituloNuevo) to max_titulo DO
TituloNuevo:=TituloNuevo + ' ';
registroC.titulo:=TituloNuevo;
END;
2:BEGIN
Writeln('Introduce el nuevo interprete');
Readln(InterpreteNuevo);
FOR i:=length(InterpreteNuevo) to max_interprete DO
InterpreteNuevo:=InterpreteNuevo + ' ';
registroC.interprete:=InterpreteNuevo;
END;
3:BEGIN
.......
.......
.......
9:
ELSE Writeln('La opcion escogida es incorrecta');
END;
UNTIL (opcion =9);
Seek(datosC,posicionC);
Write(datosC,registroC);
Seek(datosA,posicionA);
Write(datosA,registroA);
END;
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