private void LeerAtributosTabla() { long direccion_atributo, dir_indice, dir_siguienteAtributo; int tipo_clave, longitud_atributo; char[] nombre_Atributos_Char, nombre_Archivo_LlaveF; char tipo; using (BinaryReader r = new BinaryReader(File.Open(ArchivoTabla.FullName, FileMode.Open)))//para leer { Lista_Atributos_Actual.Clear(); int tamanioArchivo = (int)r.BaseStream.Length; if (tamanioArchivo > 8) { long dirSig = 0; r.BaseStream.Seek(0, SeekOrigin.Begin); while (dirSig != -1)//mientras la direcci[on de siguiente atributo no sea null { } { //dir_indice = r.ReadInt64();//8 Atributo auxAtributo = new Atributo(); nombre_Atributos_Char = r.ReadChars(35); //35 nombre_Archivo_LlaveF = r.ReadChars(35); //35 tipo = r.ReadChar(); //1 tipo de atributo entero o char longitud_atributo = r.ReadInt32(); //4 tipo_clave = r.ReadInt32(); //4 direccion_atributo = r.ReadInt64(); //8 dir_siguienteAtributo = r.ReadInt64(); //8 dirSig = dir_siguienteAtributo; for (int i = 0; i < nombre_Atributos_Char.Count(); i++) { if (nombre_Atributos_Char[i] != Convert.ToChar("\0")) { auxAtributo.nombeAtributo_String += nombre_Atributos_Char[i]; } } for (int i = 0; i < nombre_Archivo_LlaveF.Count(); i++) { if (nombre_Archivo_LlaveF[i] != Convert.ToChar("\0")) { auxAtributo.nombre_ArchivoLlaveForaneaString += nombre_Archivo_LlaveF[i]; } } auxAtributo.tipoDeDato = tipo; auxAtributo.longitudDato = longitud_atributo; auxAtributo.DireccionAtributo = direccion_atributo; auxAtributo.tipocve = tipo_clave; auxAtributo.DireccionSigAtributo = dir_siguienteAtributo; if (auxAtributo.tipoDeDato == 'E') { TablaDeRegistros.Columns.Add(auxAtributo.nombeAtributo_String, System.Type.GetType("System.Int32")); } else if (auxAtributo.tipoDeDato == 'F') { TablaDeRegistros.Columns.Add(auxAtributo.nombeAtributo_String); } else { TablaDeRegistros.Columns.Add(auxAtributo.nombeAtributo_String, System.Type.GetType("System.String")); } Lista_Atributos_Actual.Add(auxAtributo); } r.Close(); llenaTabla(); } else { if (tamanioArchivo == 0) { r.Close(); MessageBox.Show("Tabla vacia"); inicializaTabla(); } else { MessageBox.Show("Tabla vacia"); } } } }