Programación General > Pascal

 Trabajar Con Archivos

(1/1)

JrcsDev:
Saludos amigos... necesito que me ayuden con algo. Yo he trabajado archivos en pascal, pero utilizando estructuras definidas por mí... ¿Existe alguna otra forma de guardar varios registros en un archivo para luego poder recuperalos? Hablo de una forma que no sea definiendo una estructura de datos con Type... Si alguien tiene algún pequeño ejemplo, se le agradece la ayuda... :)... Bueno, espero a ver quien puede ayudarme... :D y de una vez... GRACIAS!

Enko:
Si se puede,.
Pero no veo cual es el problema, En vez de guardar un tipo definido en un Type, guardas un tipo definido en el lenguaje, según lo veo es lo mismo.
¿A que llamas REGISTRO?

podrias dar un ejemplo con un código? es que como lo planteas, no se bien a donde apuntas.
¿Que es lo que deseas hacer?

 :hola:

JrcsDev:
Bueno, aqui te dejo un programa que acabo de hacer. Este es el método que yo utilizo: Creo mi propia estructura de datos con TYPE y luego creo un archivo de la forma Var F: File of TEstructura. Como verás, estoy creando un archivo (binario) de estructura, y voy guardando registro por registro. Como este tipo de archivo no se puede abrir con APPEND como los archivos de texto, entonces utilizo un archivo auxiliar para no perder los datos anteriores cada vez que vaya a introducir uno nuevo. Ahora, creo que necesito limpiar el buffer, porque la primera lectura la hace bien, pero en las siguientes lecturas me salta la lectura del nombre....

Ahora explicado como funciona mi archivo, lo que pregunto es: ¿existe otra forma de guardar registros que no sea esta? Ando buscando otra forma que tambien me permita recuperar los datos cuando sea necesario... como esta...

A continuación mi código:


--- Código: Text ---Uses CRT;const fname='datos1.dat';      resp='respaldo.dat';type persona = Record     nombre: string[10];     edad: integer;End;var f,r: file of persona;    k: char;    p,pa: persona;function ExistF(fn: string):boolean;var f: file;Begin     {$I-}     assign(f,fn);     reset(f);     close(f);     {$I+}     ExistF:= (IOResult=0) and (fn<>'');End;procedure menu;Begin     clrscr;     gotoxy(2,2);write('MENU:');     gotoxy(3,4);write('[1] >> Agregar');     gotoxy(3,5);write('[2] >> Imprimir');     gotoxy(3,6);write('[ESC] >> Salir');     gotoxy(2,8);write('Opcion: ');     k:=readkey;End;procedure Agregar;Begin     clrscr;     gotoxy(2,2);write('AGREGAR DATOS');     gotoxy(2,4);write('Nombre: ');     read(p.nombre);     gotoxy(2,5);write('Edad: ');     read(p.edad);     reset(f);     rewrite(r);     while not eof(f) do     Begin          read(f,pa);          write(r,pa);     End;     close(f);     write(r,p);     close(r);     rewrite(f);     reset(r);     while not eof(r) do     Begin          read(r,pa);          write(f,pa);     End;     close(f);     close(r);End;procedure Imprimir;Begin     clrscr;     reset(f);     while not eof(f) do     Begin          read(f,p);          writeln(p.nombre:15,p.edad:5);     End;     writeln('<Fin de Arvhico...>');     readkey;     close(f);End; Begin     assign(f,fname);     assign(r,resp);     if not existf(fname) then     Begin          rewrite(f);          close(f);     End;     while k<>#27 do     Begin          menu;          if k='1' then agregar;          if k='2' then imprimir;     End;End. 
Lo que trato es de aprender más métodos... Saludos y Gracias... :D

-DriverOp-:
Ehm... algunas cosas serían más sencillas si usas el procedimiento Seek();

Navegación

[0] Índice de Mensajes

Ir a la versión completa