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 {} } } }
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"); } }
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; } } } }
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; } } } }
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); } }
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); } }
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); } }
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; } } }
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()); } }
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; } } }