Ejemplo n.º 1
0
 public void leeBloqueP(CEntidad ENTIDAD, string nameArch, int Tam)
 {
     foreach (CIndexP idxP in ENTIDAD.Lista_Indices)
     {
         if (idxP.DirRegistros != -1)
         {
             try
             {
                 FileStream file = new FileStream(nameArch, FileMode.Open, FileAccess.Read);
                 file.Seek(idxP.DirRegistros, SeekOrigin.Current);
                 using (BinaryReader leer = new BinaryReader(file))
                 {
                     for (int i = 0; i < 100; i++)
                     {
                         CIndexP ind = new CIndexP();
                         long    dat = leer.ReadInt64();
                         ind.DirIndice = dat;
                         string datoS = "";
                         for (int j = 0; j < Tam; j++)
                         {
                             datoS += leer.ReadChar();
                         }
                         ind.Indice = datoS;
                         long dat1 = leer.ReadInt64();
                         ind.DirRegistros = dat1;
                         idxP.Lista_IndexP.Add(ind);
                     }
                 }
                 file.Close();
             }
             catch
             {}
         }
     }
 }
Ejemplo n.º 2
0
        public void modifica_Indice(long apuntador, string nameArch, CIndexP indice, int Tam)
        {
            try
            {
                using (BinaryWriter escribe = new BinaryWriter(new FileStream(nameArch, FileMode.Open)))
                {
                    escribe.Seek(Convert.ToInt32(apuntador), SeekOrigin.Current);
                    escribe.Write(indice.DirIndice);
                    //MessageBox.Show(indice.Indice);
                    //MessageBox.Show("tamaño del string" + Tam.ToString());
                    //MessageBox.Show("Tamaño del string = " + indice.Indice.Length.ToString());
                    for (int i = 0; i < Tam; i++)
                    {
                        if (i != Tam - 1)
                        {
                            escribe.Write(indice.Indice[i]);
                        }
                        else
                        {
                            escribe.Write("");
                        }
                    }

                    //MessageBox.Show("HOLA");
                    escribe.Write(indice.DirRegistros);
                    //MessageBox.Show(indice.DirRegistros.ToString());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "error");
            }
        }
Ejemplo n.º 3
0
        public void InsertaRegOnIdxS(CEntidad ENT, CRegistro REG)
        {
            int    pos       = 0;
            string nombreIdx = NombreIdx(ENT.Nombre);

            for (int j = 0; j < ENT.Lista_Atrb.Count(); j++)
            {
                if (ENT.Lista_Atrb[j].Indice == 3)
                {
                    pos = j;
                    break;
                }
            }
            for (int i = 0; i < 50; i++)
            {
                string registro = REG.Lista_Atributos[pos].ToString();
                string compara  = "";
                for (int k = 0; k < ENT.Lista_Atrb[pos].Tamaño - 1; k++)
                {
                    compara += ENT.Lista_Indices[i + 27].Indice[k];
                }
                if (registro == compara)
                {
                    //MessageBox.Show("Ya existe el bloque" + "   Tamaño del bloque = " + ENT.Lista_Indices[i + 27].Lista_IndexP.Count());
                    foreach (CIndexP idxS in ENT.Lista_Indices[i + 27].Lista_IndexP)
                    {
                        if (idxS.DirRegistros == -1)
                        {
                            //MessageBox.Show("Direcion del bloque " + ENT.Lista_Indices[i + 27].DirRegistros.ToString());
                            idxS.DirRegistros = REG.Reg_dir;
                            archivo.modifica_IndiceS(idxS.DirIndice, nombreIdx, idxS);
                            break;
                        }
                    }
                    break;
                }
                else
                {
                    if (ENT.Lista_Indices[i + 27].Indice[0].ToString() == " ")
                    {
                        ENT.Lista_Indices[i + 27].Indice       = registro;
                        ENT.Lista_Indices[i + 27].DirRegistros = dimeTamArch(nombreIdx);
                        archivo.modifica_Indice(ENT.Lista_Indices[i + 27].DirIndice, nombreIdx, ENT.Lista_Indices[i + 27], ENT.Lista_Atrb[pos].Tamaño);
                        for (int j = 0; j < 50; j++)
                        {
                            CIndexP indice = new CIndexP();
                            indice.DirIndice    = dimeTamArch(nombreIdx);
                            indice.DirRegistros = -1;
                            ENT.Lista_Indices[i + 27].Lista_IndexP.Add(indice);
                            archivo.agregaidxS(nombreIdx, indice);
                        }
                        InsertaRegOnIdxS(ENT, REG);
                        break;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public void Inserta_Indice(CEntidad ENT)
        {
            if (ENT.Lista_Registros.Count == 0)
            {
                string nombre = NombreIdx(ENT.Nombre);
                //MessageBox.Show("Nombre del Archivo .IDX  =  " + nombre);
                archivo.creaIdx(nombre);

                foreach (CAtributo atr in ENT.Lista_Atrb)
                {
                    if (atr.Indice == 2)
                    {
                        atr.Dir_Indice = dimeTamArch(nombre);
                        archivo.modifica_atri_sig(atr.Direccion, name, atr);

                        if (atr.Tipo == 'S')
                        {
                            char[] abc = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
                            for (int i = 0; i < abc.Length; i++)
                            {
                                CIndexP ind = new CIndexP();
                                ind.DirIndice = dimeTamArch(nombre);
                                ind.Indice    = abc[i].ToString();
                                long dat = -1;
                                ind.DirRegistros = dat;
                                ENT.Lista_Indices.Add(ind);
                                archivo.agregaidxPp(nombre, ind, abc[i]);
                            }
                        }
                        break;
                    }
                }
                foreach (CAtributo atr in ENT.Lista_Atrb)
                {
                    if (atr.Indice == 3)
                    {
                        atr.Dir_Indice = dimeTamArch(nombre);
                        archivo.modifica_atri_sig(atr.Direccion, name, atr);

                        for (int i = 0; i < 50; i++)
                        {
                            CIndexP ind = new CIndexP();
                            ind.DirIndice = dimeTamArch(nombre);
                            string cadena = stringVacio(atr.Tamaño);
                            string nom    = cadena;
                            ind.Indice = nom;
                            long dat = -1;
                            ind.DirRegistros = dat;
                            ENT.Lista_Indices.Add(ind);
                            archivo.agregaidxPB(nombre, ind, atr.Tamaño);
                        }
                        break;
                    }
                }
            }
        }
Ejemplo n.º 5
0
 public void agregaidxS(string nameArch, CIndexP indice)
 {
     try
     {
         using (BinaryWriter escribe = new BinaryWriter(new FileStream(nameArch, FileMode.Open)))
         {
             escribe.Seek(0, SeekOrigin.End);
             escribe.Write(indice.DirIndice);
             escribe.Write(indice.DirRegistros);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 6
0
 public void modifica_IndiceS(long apuntador, string nameArch, CIndexP indice)
 {
     try
     {
         using (BinaryWriter escribe = new BinaryWriter(new FileStream(nameArch, FileMode.Open)))
         {
             escribe.Seek(Convert.ToInt32(apuntador), SeekOrigin.Current);
             escribe.Write(indice.DirIndice);
             escribe.Write(indice.DirRegistros);
         }
     }
     catch (Exception ex)
     {
         //MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 7
0
 public void agregaidxPB(string nameArch, CIndexP indice, int Tam)
 {
     try
     {
         using (BinaryWriter escribe = new BinaryWriter(new FileStream(nameArch, FileMode.Open)))
         {
             escribe.Seek(0, SeekOrigin.End);
             escribe.Write(indice.DirIndice);
             for (int i = 0; i < Tam; i++)
             {
                 escribe.Write(indice.Indice[i]);
             }
             escribe.Write(indice.DirRegistros);
         }
     }
     catch (Exception ex)
     {
         //MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 8
0
 public void leeBloqueS(CEntidad ENTIDAD, string nameArch, int Tam)
 {
     for (int j = 0; j < 50; j++)
     {
         if (ENTIDAD.Lista_Indices.Count != 0)
         {
             CIndexP idxP = ENTIDAD.Lista_Indices[j + 27];
             if (idxP.DirRegistros != -1)
             {
                 try
                 {
                     FileStream file = new FileStream(nameArch, FileMode.Open, FileAccess.Read);
                     file.Seek(idxP.DirRegistros, SeekOrigin.Current);
                     using (BinaryReader leer = new BinaryReader(file))
                     {
                         for (int i = 0; i < 50; i++)
                         {
                             CIndexP ind = new CIndexP();
                             long    dat = leer.ReadInt64();
                             ind.DirIndice = dat;
                             long dat1 = leer.ReadInt64();
                             ind.DirRegistros = dat1;
                             idxP.Lista_IndexP.Add(ind);
                         }
                     }
                     file.Close();
                 }
                 catch
                 { }
             }
         }
         else
         {
             break;
         }
     }
 }
Ejemplo n.º 9
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());
            }
        }
Ejemplo n.º 10
0
        public void InsertaRegOnIdx(CEntidad ENT, CRegistro REG)
        {
            int    pos       = 0;
            string nombreIdx = NombreIdx(ENT.Nombre);

            for (int j = 0; j < ENT.Lista_Atrb.Count(); j++)
            {
                if (ENT.Lista_Atrb[j].Indice == 2)
                {
                    pos = j;
                    break;
                }
            }
            for (int i = 0; i < 27; i++)
            {
                string registro  = REG.Lista_Atributos[pos].ToString();
                string mayuscula = registro[0].ToString().ToUpper();
                if (mayuscula == ENT.Lista_Indices[i].Indice)
                {
                    //MessageBox.Show(ENT.Lista_Indices[i].Indice.ToString() + "  " + ENT.Lista_Indices[i].DirRegistros.ToString());
                    if (ENT.Lista_Indices[i].DirRegistros == -1)
                    {
                        for (int j = 0; j < 100; j++)
                        {
                            CIndexP indice = new CIndexP();
                            long    tam    = dimeTamArch(nombreIdx);
                            indice.DirIndice = tam;
                            if (j == 0)
                            {
                                ENT.Lista_Indices[i].DirRegistros = tam;
                                char abc = ENT.Lista_Indices[i].Indice[0];
                                Archivo.modifica_IndiceP(ENT.Lista_Indices[i].DirIndice, nombreIdx, ENT.Lista_Indices[i], abc);
                            }
                            string cadena = stringVacio(ENT.Lista_Atrb[pos].Tamaño);
                            indice.Indice       = cadena;
                            tam                 = -1;
                            indice.DirRegistros = tam;
                            ENT.Lista_Indices[i].Lista_IndexP.Add(indice);
                            Archivo.agregaidxPB(nombreIdx, indice, ENT.Lista_Atrb[pos].Tamaño);
                        }
                        //MessageBox.Show("Se creo correctamente el bloque del indice " + ENT.Lista_Indices[i].Indice);
                        InsertaRegOnIdx(ENT, REG);
                    }
                    else
                    {
                        //MessageBox.Show("Ya existe el bloque, ahora se agregara este elemento en el");
                        foreach (CIndexP indP in ENT.Lista_Indices[i].Lista_IndexP)
                        {
                            if (indP.Indice[0].ToString() == " ")
                            {
                                indP.Indice       = registro;
                                indP.DirRegistros = REG.Reg_dir;
                                archivo.modifica_Indice(indP.DirIndice, nombreIdx, indP, ENT.Lista_Atrb[pos].Tamaño);
                                break;
                            }
                        }
                    }
                    break;
                }
            }
        }