Beispiel #1
0
        public void Inserta_Atributo(CAtributo AT, CEntidad EN)
        {
            if (EN.Ptr_atrib == -1)
            {
                EN.Ptr_atrib = dimeTamArch(Name);

                archivo.modifica_ent_sig(EN.Ptr_entidad, Name, EN);
                AT.Direccion    = dimeTamArch(Name);
                AT.Sig_Atributo = -1;
                EN.Lista_Atrb.Add(AT);
                archivo.insertaAtributo(AT, Name);
                //Console.Write("CASO 1 \n");
            }
            else
            {
                AT.Direccion    = dimeTamArch(Name);
                AT.Sig_Atributo = -1;
                int tam = EN.Lista_Atrb.Count();
                //Console.Write(tam + " \n");
                EN.Lista_Atrb[tam - 1].Sig_Atributo = AT.Direccion;  //Modificar el atributo anterio su direccion soguiente en el archivo para que haga el link
                Archivo.modifica_atri_sig(EN.Lista_Atrb[tam - 1].Direccion, Name, EN.Lista_Atrb[tam - 1]);
                Console.Write(EN.Lista_Atrb[tam - 1].Direccion + " \n");
                EN.Lista_Atrb.Add(AT);
                archivo.insertaAtributo(AT, Name);
                //Console.Write("CASO 2 \n");
            }
        }
Beispiel #2
0
 public void Modifica_Atributo(CEntidad Ent, CAtributo ATRI, CAtributo ATRI_MOD)
 {
     foreach (CAtributo Atr in Ent.Lista_Atrb)
     {
         if (Atr.Nombre == ATRI_MOD.Nombre)
         {
             Atr.Nombre = ATRI.Nombre;
             Atr.Tipo   = ATRI.Tipo;
             Atr.Tamaño = ATRI.Tamaño;
             Atr.Indice = ATRI.Indice;
             Archivo.modifica_atri_sig(Atr.Direccion, Name, Atr);
             break;
         }
     }
 }
Beispiel #3
0
 public void Elimina_Atributo(CAtributo atri_remove, CEntidad Ent)
 {
     if (Ent.Ptr_atrib == atri_remove.Direccion)
     {
         Ent.Ptr_atrib = atri_remove.Sig_Atributo;
         archivo.modifica_ent_sig(Ent.Ptr_entidad, Name, Ent);
         Ent.Lista_Atrb.Remove(atri_remove);
         Console.Write("Exito caso 1");
     }
     else
     {
         int position = Ent.Lista_Atrb.IndexOf(atri_remove);
         Ent.Lista_Atrb[position - 1].Sig_Atributo = atri_remove.Sig_Atributo;
         archivo.modifica_atri_sig(Ent.Lista_Atrb[position - 1].Direccion, Name, Ent.Lista_Atrb[position - 1]);
         Ent.Lista_Atrb.Remove(atri_remove);
         Console.Write("Exito caso 2");
     }
 }
Beispiel #4
0
        public void leeAtributos(long dir_apuntador, string nameArch, CEntidad entidadAux)
        {
            //Console.Write(dir_apuntador + " Esta es la direccion del apuntador\n");
            if (dir_apuntador != -1)
            {
                try
                {
                    FileStream file = new FileStream(nameArch, FileMode.Open, FileAccess.Read);
                    //Console.Write(dir_apuntador + " Esta es la direccion ya de busqueda\n");
                    file.Seek(dir_apuntador, SeekOrigin.Current);
                    using (BinaryReader leer = new BinaryReader(file))
                    {
                        CAtributo ATRI = new CAtributo();

                        /*  private string nombre;
                         * private long direccion;
                         * private char tipo;
                         * private int tamaño;
                         * private int indice;
                         * private long dir_Indice;
                         * private long sig_Atributo;*/

                        ATRI.Direccion    = leer.ReadInt64();
                        ATRI.Nombre       = leer.ReadString();
                        ATRI.Tipo         = leer.ReadChar();
                        ATRI.Tamaño       = leer.ReadInt32();
                        ATRI.Indice       = leer.ReadInt32();
                        ATRI.Dir_Indice   = leer.ReadInt64();
                        ATRI.Sig_Atributo = leer.ReadInt64();

                        entidadAux.Lista_Atrb.Add(ATRI);
                        //Console.Write(ATRI.Direccion + "\n");
                        //Console.Write(ATRI.Nombre + "\n");
                        //Console.Write(ATRI.Sig_Atributo + "\n");
                        leeAtributos(ATRI.Sig_Atributo, nameArch, entidadAux);
                    }
                    file.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
Beispiel #5
0
 public void modifica_atri_sig(long apuntador, string nameArch, CAtributo AT)
 {
     try
     {
         using (BinaryWriter escribe = new BinaryWriter(new FileStream(nameArch, FileMode.Open)))
         {
             escribe.Seek(Convert.ToInt32(apuntador), SeekOrigin.Current);
             escribe.Write(AT.Direccion);
             escribe.Write(AT.Nombre);
             escribe.Write(AT.Tipo);
             escribe.Write(AT.Tamaño);
             escribe.Write(AT.Indice);
             escribe.Write(AT.Dir_Indice);
             escribe.Write(AT.Sig_Atributo);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Beispiel #6
0
 public void insertaAtributo(CAtributo AT, string nameArch)
 {
     try
     {
         using (BinaryWriter escribe = new BinaryWriter(new FileStream(nameArch, FileMode.Open)))
         {
             escribe.Seek(0, SeekOrigin.End);
             escribe.Write(AT.Direccion);
             escribe.Write(AT.Nombre);
             escribe.Write(AT.Tipo);
             escribe.Write(AT.Tamaño);
             escribe.Write(AT.Indice);
             escribe.Write(AT.Dir_Indice);
             escribe.Write(AT.Sig_Atributo);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Beispiel #7
0
        public void leeIndices(CAtributo atr, string nameArch, CEntidad ENTIDAD)
        {
            try
            {
                FileStream file = new FileStream(nameArch, FileMode.Open, FileAccess.Read);
                //MessageBox.Show("Direccion del indice " + atr.Dir_Indice.ToString() + " " + nameArch);
                file.Seek(atr.Dir_Indice, SeekOrigin.Current);
                using (BinaryReader leer = new BinaryReader(file))
                {
                    //MessageBox.Show("indice  " + atr.Indice.ToString() + " numero de indices   " + ENTIDAD.Lista_Indices.Count.ToString());

                    if (atr.Indice == 2)
                    {
                        if (atr.Tipo == 'S')
                        {
                            for (int i = 0; i < 27; i++)
                            {
                                CIndexP ind = new CIndexP();
                                long    dat = leer.ReadInt64();
                                ind.DirIndice = dat;
                                char datoS = leer.ReadChar();
                                ind.Indice = datoS.ToString();
                                long dat1 = leer.ReadInt64();
                                ind.DirRegistros = dat1;
                                ENTIDAD.Lista_Indices.Add(ind);
                            }
                        }
                        if (atr.Tipo == 'I')
                        {
                            for (int i = 0; i < 10; i++)
                            {
                                CIndexP ind = new CIndexP();
                                long    dat = leer.ReadInt64();
                                ind.DirIndice = dat;
                                char datoS = leer.ReadChar();
                                ind.Indice       = datoS.ToString();
                                dat              = leer.ReadInt64();
                                ind.DirRegistros = dat;
                                ENTIDAD.Lista_Indices.Add(ind);
                            }
                        }
                    }
                    if (atr.Indice == 3)
                    {
                        for (int i = 0; i < 50; i++)
                        {
                            CIndexP ind = new CIndexP();
                            long    dat = leer.ReadInt64();
                            ind.DirIndice = dat;
                            string datoS = "";
                            for (int j = 0; j < atr.Tamaño; j++)
                            {
                                datoS += leer.ReadChar();
                            }
                            ind.Indice = datoS;
                            long dat1 = leer.ReadInt64();
                            ind.DirRegistros = dat1;
                            ENTIDAD.Lista_Indices.Add(ind);
                            //MessageBox.Show("Direccion del bloque " + ind.Indice + " = " + ind.DirRegistros);
                        }
                    }
                }
                file.Close();
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.ToString());
            }
        }