Ayuda con archivos binarios en PASCAL, no encuentro la vuelta
Publicado por Andrés (1 intervención) el 28/09/2013 23:16:58
Hola como estan? Recurro al foro por un problema que tengo en Pascal, he intentado de muchas formas, pero no logro conseguir que el programa funcione bien..
Lo que quiero es que el programa maneje estructurados (usuarios) de cada usuario se guarda nombre y edad.. La idea es que permita por un lado agregar un nuevo usuario al archivo, y por otro listar los ya ingresados.
Intente de muchas formas posibles, muchos errores obtenidos, lo más cercano a la solución, es el codigo que mostrare a continuación, pero si abro el programa otra vez, ya tira cualquier error y se cuelga..
Desde ya muchisimas gracias!:
program prueba;
uses crt;
type user = record
nombre: String;
edad: integer;
end;
var fichero: file of user;
aux: file of user;
a, b : user;
opc, i : Byte;
BEGIN
assign(fichero, 'usuarios.dat');
assign(aux, 'auxiliar.dat');
repeat
BEGIN
clrscr();
writeln('1-Nuevo usuario');
writeln('2-Listar usuarios');
readln(opc);
case opc of
1:
begin
writeln('Ingrese el nombre');
readln(b.nombre);
writeln('Ingrese la edad');
readln(b.edad);
{$I-}
reset(fichero);
{$I+}
if (ioResult = 0) then begin
rewrite(aux);
i := 0;
while not eof(fichero) do begin
seek(fichero, i);
read(fichero, a);
write(aux, a);
i := i + 1;
end;
write(aux, b);
close(aux);
close(fichero);
reset(aux);
rewrite(fichero);
i := 0;
while not eof(aux) do begin
seek(aux, i);
read(aux, a);
write(fichero, a);
i := i + 1;
end;
close(aux);
close(fichero);
end
else begin
rewrite(fichero);
write(fichero, b);
close(fichero);
end;
end;
2:
begin
reset(fichero);
i := 0;
while not eof(fichero) do
begin
seek(fichero, i);
read(fichero, a);
writeln('Nombre: ', a.nombre, 'Edad: ', a.edad);
i := i + 1;
readln;
end;
close(fichero);
end
else writeln('No ingresaste una opcion valida');
readln;
end;
END;
until (opc = 0);
END.
Lo que quiero es que el programa maneje estructurados (usuarios) de cada usuario se guarda nombre y edad.. La idea es que permita por un lado agregar un nuevo usuario al archivo, y por otro listar los ya ingresados.
Intente de muchas formas posibles, muchos errores obtenidos, lo más cercano a la solución, es el codigo que mostrare a continuación, pero si abro el programa otra vez, ya tira cualquier error y se cuelga..
Desde ya muchisimas gracias!:
program prueba;
uses crt;
type user = record
nombre: String;
edad: integer;
end;
var fichero: file of user;
aux: file of user;
a, b : user;
opc, i : Byte;
BEGIN
assign(fichero, 'usuarios.dat');
assign(aux, 'auxiliar.dat');
repeat
BEGIN
clrscr();
writeln('1-Nuevo usuario');
writeln('2-Listar usuarios');
readln(opc);
case opc of
1:
begin
writeln('Ingrese el nombre');
readln(b.nombre);
writeln('Ingrese la edad');
readln(b.edad);
{$I-}
reset(fichero);
{$I+}
if (ioResult = 0) then begin
rewrite(aux);
i := 0;
while not eof(fichero) do begin
seek(fichero, i);
read(fichero, a);
write(aux, a);
i := i + 1;
end;
write(aux, b);
close(aux);
close(fichero);
reset(aux);
rewrite(fichero);
i := 0;
while not eof(aux) do begin
seek(aux, i);
read(aux, a);
write(fichero, a);
i := i + 1;
end;
close(aux);
close(fichero);
end
else begin
rewrite(fichero);
write(fichero, b);
close(fichero);
end;
end;
2:
begin
reset(fichero);
i := 0;
while not eof(fichero) do
begin
seek(fichero, i);
read(fichero, a);
writeln('Nombre: ', a.nombre, 'Edad: ', a.edad);
i := i + 1;
readln;
end;
close(fichero);
end
else writeln('No ingresaste una opcion valida');
readln;
end;
END;
until (opc = 0);
END.
Valora esta pregunta


0