Pascal/Turbo Pascal - AYUDA DE ARCHIVOS PARA TURBO PASCAL

 
Vista:

AYUDA DE ARCHIVOS PARA TURBO PASCAL

Publicado por Daniel (3 intervenciones) el 11/02/2012 21:55:01
hola que tal , soy un chico de 4to año que tiene que rendir laboratorio de informatica en marzo , y tengo que saber realizar un abm en turbo pascal 7.0.

el asunto es que me pase dias buscando en internet tutoriales o video tutoriales y no logre encontrar un tutorial en el que se explique paso por paso cada linea de un abm , porque se que esta ligado a archivos y registros pero no hay ejemplos de como utilizar estos elementos , existen tutoriales pero no son muy didacticos para poder comprenderlos bien , asi que bueno , sin mas preámbulos el que me pueda dar una mano le voy a estar eternamente agradecido.

desde ya muchas gracias comunidad.
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

AYUDA DE ARCHIVOS PARA TURBO PASCAL

Publicado por ramon (2158 intervenciones) el 12/02/2012 19:19:51
{Espero sea esto lo que quieres si no dame mas datos si tienes dudas pregunta te atenderé
lo mas rápido que pueda suerte}

program archregis;
uses
crt;
const
archivo : string = 'C:\REGPRU.DAT';
type
registro = record {Este es el registro que manejaremos}
ndni : longint;
nombre : string[100];
{Se pueden meter todos los datos que quieras}
end; {final del registro}

var
f : file of registro; {Para guardar el registro o los registros}
datos : registro; {Para trabajar con el registro}


procedure entrada; {Entrada de datos al registro}
begin
gotoxy(10,2);write('N§ DEL DNI : ');
gotoxy(23,2);readln(datos.ndni);
gotoxy(10,3);write('NOMBRE : ');
gotoxy(23,3);readln(datos.nombre);
{ Aqui mas entradas si las tubiera}
{Este tipo de entrada no es muy fiable pues readln no
detecta si es caracter o numero y despues salta el
error de entrada si no se controla es mejor crear
una funcion de entrada controlada para que sies numero
no se pueda entrar otra cosa que no sea numero}
end;

procedure guarda_registro;
begin
assign(f,archivo); {Asignamos el nombre del fichero}
{$I-} reset(f); {$I+} {Comprovamos su presencia o ausencia}
if ioresult <> 0 then {Si fuera mallor de 0 significaria que el
fichero no existe por lo tanto en nuestro
caso lo creamos y guardamos los datos}
begin
rewrite(f); {creamos fichero}
seek(f,0); {nos posicionamos en la posicion 0 inicio del
fichero}
write(f,datos); {guardamos los datos entrados fijate solo un
registro no mas}
close(f); {cerramos el fichero para que no se pierda nada}
end
else {encaso de que exista ya un fichero guardamos en el el
registro}
begin
seek(f,filesize(f)); {nos posicionamos en la ultima posicion
del fichero o sea al final ya que filesize(f)
nos facilita el tama¤o de las registros entrados}
write(f,datos);
close(f);
end;
end;

procedure verregistros;
var
tama, pos : longint;
tec : char;
begin
assign(f,archivo); {Asignamos el nombre del fichero}
{$I-} reset(f); {$I+} {Comprovamos su presencia o ausencia}
if ioresult <> 0 then {Si fuera mallor de 0 significaria que el
fichero no existe por lo tanto en nuestro
caso salimos sin mas informando del error}
begin
gotoxy(10,4);write('El Fichero nombre ',archivo,' no existe');
gotoxy(10,5);write('Pulse enter');
readln;
exit;
end
else {si existe tomamos los datos y los presenramos}
begin
tama := filesize(f) - 1; {los registros esistentes menos 1}
pos := 0; {primer registo del archivo}
repeat
seek(f,pos); {opuntamos al primer registro esto al inicio}
read(f,datos); {cargamos los datos de ese registro}
gotoxy(10,2);write('N§ DNI : ',datos.ndni);
gotoxy(10,3);write('Nombre : ',datos.nombre);
tec := readkey; {esperamos a pulsar una tecla}
if tec = #72 then {si pulsa la tecla de flecha arriva
decrementamos pos asta cero}
begin
pos := pos - 1;
if pos < 0 then
pos := 0;
end;
if tec = #80 then {si pulsa la tecla de flecha avajo
incrementamos pos asta fin de archivo}
begin
pos := pos + 1;
if pos > tama then
pos := tama;
end;
until tec = #27; {la tecla esc nos saca del proceso}
close(f);
end;
end;

procedure borradoarchivo;
begin
assign(f,archivo); {Asignamos el nombre del fichero}
{$I-} reset(f); {$I+} {Comprovamos su presencia o ausencia}
if ioresult <> 0 then
begin
exit;
end
else
begin {si existe lo anulamos}
close(f);
erase(f);
end;
end;


procedure menu;
var
tecla : char;
salir : boolean;
begin
salir := false;
repeat
clrscr;
gotoxy(10,2);write('***** MENU PRINCIPAL *****');
gotoxy(10,4);write(' 1 = Entrar datos');
gotoxy(10,5);write(' 2 = Ver datos');
gotoxy(10,6);write(' 3 = Borrado archivos');
gotoxy(10,7);write(' 4 = Salir');
gotoxy(10,9);write('<<< Elija Opcion >>>');
tecla := readkey;
if tecla in[#49..#52] then
begin
clrscr;
case tecla of
#49 : begin
entrada;
guarda_registro;
end;
#50 : verregistros;
#51 : borradoarchivo;
#52 : salir := true;
end;
end;
until salir = true;
end;

begin
menu;
end.

{Esto es como pequeño ensayo para entrenar}
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

AYUDA DE ARCHIVOS PARA TURBO PASCAL

Publicado por Daniel (3 intervenciones) el 12/02/2012 21:58:48
hola Ramon , gracias por tu ayuda , leyendo algunos tutoriales y comparandolos con tu algoritmo se me hace mas facil entender archivos , una duda que tengo es el uso de gotoxy , jamas use esa herramienta , es crucial usarla en archivos o para que sirve ? gracias!
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

AYUDA DE ARCHIVOS PARA TURBO PASCAL

Publicado por Daniel (3 intervenciones) el 13/02/2012 10:44:12
AA NO AHORA ENTENDI , MUCHISIMAS GRACIAS RAMON , NO ME QUEDABA CLAROEL USO DE REGISTROS PERO YA QUEDO TODO CLARO , ETERNAMENTE AGRADECIDO!!
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