• Lunes 29 de Abril de 2024, 20:59

Autor Tema:  Trabajar Con Archivos  (Leído 1596 veces)

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Trabajar Con Archivos
« en: Sábado 8 de Julio de 2006, 22:07 »
0
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!
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Trabajar Con Archivos
« Respuesta #1 en: Domingo 9 de Julio de 2006, 02:45 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Trabajar Con Archivos
« Respuesta #2 en: Domingo 9 de Julio de 2006, 04:38 »
0
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
  1. Uses CRT;
  2. const fname='datos1.dat';
  3.       resp='respaldo.dat';
  4. type persona = Record
  5.      nombre: string[10];
  6.      edad: integer;
  7. End;
  8. var f,r: file of persona;
  9.     k: char;
  10.     p,pa: persona;
  11. function ExistF(fn: string):boolean;
  12. var f: file;
  13. Begin
  14.      {$I-}
  15.      assign(f,fn);
  16.      reset(f);
  17.      close(f);
  18.      {$I+}
  19.      ExistF:= (IOResult=0) and (fn<>'');
  20. End;
  21. procedure menu;
  22. Begin
  23.      clrscr;
  24.      gotoxy(2,2);write('MENU:');
  25.      gotoxy(3,4);write('[1] >> Agregar');
  26.      gotoxy(3,5);write('[2] >> Imprimir');
  27.      gotoxy(3,6);write('[ESC] >> Salir');
  28.      gotoxy(2,8);write('Opcion: ');
  29.      k:=readkey;
  30. End;
  31. procedure Agregar;
  32. Begin
  33.      clrscr;
  34.      gotoxy(2,2);write('AGREGAR DATOS');
  35.      gotoxy(2,4);write('Nombre: ');
  36.      read(p.nombre);
  37.      gotoxy(2,5);write('Edad: ');
  38.      read(p.edad);
  39.      reset(f);
  40.      rewrite(r);
  41.      while not eof(f) do
  42.      Begin
  43.           read(f,pa);
  44.           write(r,pa);
  45.      End;
  46.      close(f);
  47.      write(r,p);
  48.      close(r);
  49.      rewrite(f);
  50.      reset(r);
  51.      while not eof(r) do
  52.      Begin
  53.           read(r,pa);
  54.           write(f,pa);
  55.      End;
  56.      close(f);
  57.      close(r);
  58. End;
  59. procedure Imprimir;
  60. Begin
  61.      clrscr;
  62.      reset(f);
  63.      while not eof(f) do
  64.      Begin
  65.           read(f,p);
  66.           writeln(p.nombre:15,p.edad:5);
  67.      End;
  68.      writeln('<Fin de Arvhico...>');
  69.      readkey;
  70.      close(f);
  71. End;
  72.  
  73. Begin
  74.      assign(f,fname);
  75.      assign(r,resp);
  76.      if not existf(fname) then
  77.      Begin
  78.           rewrite(f);
  79.           close(f);
  80.      End;
  81.      while k<>#27 do
  82.      Begin
  83.           menu;
  84.           if k='1' then agregar;
  85.           if k='2' then imprimir;
  86.      End;
  87. End.
  88.  

Lo que trato es de aprender más métodos... Saludos y Gracias... :D
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

-DriverOp-

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Trabajar Con Archivos
« Respuesta #3 en: Domingo 24 de Septiembre de 2006, 06:17 »
0
Ehm... algunas cosas serían más sencillas si usas el procedimiento Seek();