PROBLEMA CON CICLO FOR
Publicado por JUan (83 intervenciones) el 16/07/2007 21:35:22
Hola que tal, el programa compila y todo, pero el problema parece ser con el ciclo for cuando obtengo los datos, ademas la escritura/lectura del archivo la debo estar haciendo mal, la idea del programa es obtener los datos, y listar, y luego por ejemplo lo cierro, los datos que ingrese van a quedar en el archivo, cuando voy al programa por segunda vez a almacenar mas registros, quiero que me liste no solo los registros que ingrese en esa sesión, sino todos los anteriores también, cuando imprimo me imprime solo el ultimo registro que ingrese, a ver si me pueden decir en que me estoy equivocando (marquenme en que parte del codigo porque sino me pierdo un poco, soy bastante noob con esto), bueno eso era todo y les agradecería si me lo corrigen, un saludo.
program crearArchivo;
uses crt;
type
str30=string[30];
Ralu=record
nombre:str30;
edad:byte;
nota:byte;
end;
Arch=file of Ralu;
Procedure abrir(var Archivo:arch);
begin
assign(archivo,'alumnos.dat');
{$i-}
reset(archivo);
{$i-}
if ioresult<>0
then
rewrite(archivo)
else
reset(archivo)
end;
Procedure ObtenerDatos(var Archivo:arch;var reg:ralu;cant:word);
var i:word;
Begin
for i:=1 to cant do
writeln('ingrese nombre');
readln(Reg.nombre);
write(archivo,reg);
writeln('ingrese edad');
readln(reg.edad);
write(archivo,reg);
writeln('Ingrese nota');
readln(reg.nota);
write(archivo,reg);
clrscr
end;
Procedure listado(var archivo:arch;reg:ralu);
var j:word;
begin
clrscr;
While not eof(archivo) do
read(Archivo,reg);
writeln(j,'-');
writeln('Nombre: ',reg.nombre);
writeln('Edad :',reg.edad);
writeln('Nota :',reg.nota);
readln
end;
Var ArchAlu:arch;
RegAlu:Ralu;
Cantidad:word;
begin
abrir(Archalu);
writeln('Cantidad de registros a agregar: ');
readln(cantidad);
ObtenerDatos(archalu,regalu,cantidad);
listado(archalu,regalu);
readln
end.
program crearArchivo;
uses crt;
type
str30=string[30];
Ralu=record
nombre:str30;
edad:byte;
nota:byte;
end;
Arch=file of Ralu;
Procedure abrir(var Archivo:arch);
begin
assign(archivo,'alumnos.dat');
{$i-}
reset(archivo);
{$i-}
if ioresult<>0
then
rewrite(archivo)
else
reset(archivo)
end;
Procedure ObtenerDatos(var Archivo:arch;var reg:ralu;cant:word);
var i:word;
Begin
for i:=1 to cant do
writeln('ingrese nombre');
readln(Reg.nombre);
write(archivo,reg);
writeln('ingrese edad');
readln(reg.edad);
write(archivo,reg);
writeln('Ingrese nota');
readln(reg.nota);
write(archivo,reg);
clrscr
end;
Procedure listado(var archivo:arch;reg:ralu);
var j:word;
begin
clrscr;
While not eof(archivo) do
read(Archivo,reg);
writeln(j,'-');
writeln('Nombre: ',reg.nombre);
writeln('Edad :',reg.edad);
writeln('Nota :',reg.nota);
readln
end;
Var ArchAlu:arch;
RegAlu:Ralu;
Cantidad:word;
begin
abrir(Archalu);
writeln('Cantidad de registros a agregar: ');
readln(cantidad);
ObtenerDatos(archalu,regalu,cantidad);
listado(archalu,regalu);
readln
end.
Valora esta pregunta


0