Pascal/Turbo Pascal - ayuda porfavor, es urgente

 
Vista:

ayuda porfavor, es urgente

Publicado por Krystian (6 intervenciones) el 13/06/2007 16:56:58
olas tengo un programa que es el siguiente:

program loguear; {programa que crea usuarios con clave y su nombre}
uses crt;

type usuarios=record
username: string[10];
passwd: string[10];
nombre: string[20];
end;
arre=array[1..10]of usuarios;

var a: file of arre;
usuario:usuarios;
i,j:integer;
b:arre;
opcion:char;
e:integer;
cod:byte;

procedure bordes; {Se encarga de darle la tonalidad verde al fondo de la pantalla, ademas crea los bordes (margenes) para la pantalla de 80x24}
var x,y:integer;
begin
textmode(co80);
for x:=1 to 80 do
for y:=1 to 24 do
begin
gotoxy(x,y);
textbackground(2);
write(' ')
end;

y:=1;
for x:=2 to 79 do
begin
gotoxy(x,y);
write(chr(205));
end;
y:=24;
for x:=2 to 79 do
begin
gotoxy(x,y);
write(chr(205))
end;
x:=1;
for y:=2 to 23 do
begin
gotoxy(x,y);
write(chr(186))
end;
x:=80;
for y:=2 to 23 do
begin
gotoxy(x,y);
write(chr(186))
end;
gotoxy(1,1);
write(chr(201));
gotoxy(80,1);
write(chr(187));
gotoxy(1,24);
write(chr(200));
gotoxy(80,24);
write(chr(188));

end;

procedure agregar;
begin
repeat
clrscr;
bordes;
gotoxy(15,3);
write('AGREGAR USUSARIO');
gotoxy(10,5);
write('Nombre de Usuario: ');
readln(b[i].username);
gotoxy(10,6);
write('Contrasena: ');
readln(b[i].passwd);
gotoxy(10,7);
write('Nombre: ');
readln(b[i].nombre);
i:=i+1;
gotoxy(10,8);
write('desea ingresar otro usuario');
readln(opcion);
until opcion='n';
write(a,b);

end;

{procedure mostrar;}

Procedure menu;
var o:byte;
n:integer;
begin
bordes;
gotoxy(15,3);
write('ADMINISTRACION DE USUARIOS');
gotoxy(15,4);
write('--------------------------');
gotoxy(10,6);
write('1.- Agregar Usuario');
gotoxy(10,7);
write('2.- Mostrar Usuario');
gotoxy(10,8);
write('3.- Salir');
gotoxy(12,10);
write('Seleccione la opcion deseada: ');
readln(o);
val(o,cod,e);
If e<>0 then
writeln('error');
case o of
1: agregar;
2:
begin
clrscr;
bordes;
gotoxy(15,5);
write('Nombre: ',usuario.nombre);
gotoxy(15,6);
write('Usuario: ',usuario.username);
gotoxy(15,7);
write('Contrasena: ',usuario.passwd);
readln;
end;
3: i:=21;
end;
end;


Begin
i:=0;
Assign(a, 'users.dat');
rewrite(a);
repeat
menu;
until i=21;
close(a);
End.


Pero necesito que no se caiga cuando ingresen un valor no numerico y tampoco cuando no se encuentre un usuario, y que se pueda guardaar mas de un usuario, si me pueden ayudar se los agradesco chauu
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:ayuda porfavor, es urgente

Publicado por Diego Romero (996 intervenciones) el 13/06/2007 20:23:47
No comprendo bien la estrategia que has usando pero sí comprendo que quieres guardar una serie de usuarios en un archivo. Lo que no comprendo es por qué usas un array que luego guardas en un archivo. En fin.
Supongo que te refieres a que el programa no salte en error cuando el usuario ingresa un valor no numérico en el menú. Pues como lo has hecho está bien, aunque podría estar mejor si en vez de o: byte; usas o: char; y en el case preguntas por un valor char en vez de byte, eso solucionaría ese problema.

Por otro lado tienes varios errores.
El primer y más evidente es que trabajas con dos estructuras diferentes como si fueran la misma.
En la opción 2 del procedimiento menú se supone que debes mostrar los datos de un usuario en particular pero estás mostrando los datos supuestamente almacenados en el registro usuarios, el cual no está siendo llenado en ninguna parte, el que se llena es el array b.
Por otro lado nunca estás leyendo nada o escribiendo en el archivo. Hablando de esto, ¿por qué declarar un archivo de arrays si lo puedes hacer directamente con el registro declarado en la type?.
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