• Domingo 17 de Noviembre de 2024, 10:27

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - queer

Páginas: [1]
1
ADA / Problemas Con Ficheros (ayuda!)
« en: Lunes 26 de Junio de 2006, 20:30 »
Hola!  :hola: Estoy haciendo una práctica en ADA sobre gestión de datos de alumnos matriculados en una asignatura y los ficheros me están dando muchos problemas...

He distribuido el trabajo en varios TAD's y ficheros:
- Cursos.ads (.adb) --> ok
- Alumnos.ads (.adb) --> ok
- Gestion_alumnos.ads (.adb) --> trabaja con ficheros directos (uno es "fichero de hash")
- Gestion_cursos.ads (.adb) --> ídem
- Gestion_movimientos.ads (.adb) --> trabaja con ficheros secuencials y depende de los anteriores
- Menu_mantenimiento.adb

Pero llevo días con el mismo problema sólo probando los que trabajan con ficheros directos. Concretamente en Gestion_cursos (el otro será análogo) antes tenía lo siguiente:

En el .ads:
 private
   
   type Clau is record
      Dni: Integer;
      Quin: N_Curs;
   end record;
   
   -- tipus de registre del fitxer de Hash
   type Info is record
      K: Clau;
      Pos: Nombre_Cursos;   -- posició que ocupa l'element al fitxer de dades
      Seg: Nombre_Hash;   -- posició del primer element que han "col•lidit"
      Estat: Estats:=L;           -- lliure / ocupat / esborrat
   end record;  
-- nombre_cursos y nombre_hash deberían ser Positive_count según el fichero

  package Inf_Io is new Ada.Direct_Io(Info); use Inf_Io;
   
  (sub) type Hash_Cursos is new Inf_Io.File_Type;
   
  (sub) type H_Positive_Count is new Inf_Io.Positive_Count;
     

   package C_Io is new Ada.Direct_Io(Curs); use C_Io;
   
   type Fitxer_Cursos is new C_Io.File_Type;
   
   type C_Positive_Count is new C_Io.Positive_Count;

Ahora lo tengo así:

private
   
   type Clau is record
      Dni: Integer;
      Quin: N_Curs;
   end record;
   
   -- tipus de registre del fitxer de Hash
   type Info is record
      K: Clau;
      Pos: Nombre_Cursos;   -- posició que ocupa l'element al fitxer de dades
      Seg: Nombre_Hash;   -- posició del primer element que han "col•lidit"
      Estat: Estats:=L;           -- lliure / ocupat / esborrat
   end record;  


Y en el package body:

  package Inf_Io is new Ada.Direct_Io(Info); use Inf_Io;
   
  (sub) type Hash_Cursos is new Inf_Io.File_Type;
   
   (sub) type H_Positive_Count is new Inf_Io.Positive_Count;
     

   package C_Io is new Ada.Direct_Io(Curs); use C_Io;
   
   (sub) type Fitxer_Cursos is new C_Io.File_Type;
   
  (sub)  type C_Positive_Count is new C_Io.Positive_Count;


Los errores que me salen son como estos (también tengo problemas con Set_index...):

- Inf_io.Create(Fh, InOut_File, Fitxer_Hash); -- >

   Expected private type “Ada.Direct_io.File_Type" … found type Hash_Cursos

- inf_io.Write(Fh, R, Inf_io.Positive_Count( I ) ); -->

   no candidate interpretations match actuals: too many arguments in call
   expected private type “Ada.Direct_io.File_Type” … found type Hash_Cursos

No sé si me he explicado bien (la práctica es aún un poco chapucera)...  Alguien puede echarme una mano??

¡Muchas gracias!

Páginas: [1]