//metodo para modifiar atributo public void Modifica_atributo(long direccion, Atrib a) { stream = new FileStream(GS_path, FileMode.Open, FileAccess.Write); writer = new BinaryWriter(stream); stream.Seek(direccion, SeekOrigin.Begin); writer.Write(a.GS_nombre); writer.Write(a.GS_tipo); writer.Write(a.GS_longitud); writer.Write(a.GS_dir_atributo); writer.Write(a.GS_indice); writer.Write(a.GS_dir_indice); writer.Write(a.GS_dir_sig_atrib); writer.Close(); writer.Dispose(); stream.Close(); stream.Dispose(); }
//metodo para insertar atributo en el archivo public void insertaAtributo(Atrib a) { long tam_archivo = Tam_archivo(); stream = new FileStream(GS_path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite); writer = new BinaryWriter(stream); stream.Seek(tam_archivo, SeekOrigin.Begin); writer.Write(a.GS_nombre); writer.Write(a.GS_tipo); writer.Write(a.GS_longitud); writer.Write(a.GS_dir_atributo); writer.Write(a.GS_indice); writer.Write(a.GS_dir_indice); writer.Write(a.GS_dir_sig_atrib); writer.Close(); writer.Dispose(); stream.Close(); stream.Dispose(); }
//boton para almacenar atributo en el archivo private void Grabar_Click(object sender, EventArgs e) { Modificar.Enabled = true; Eliminar.Enabled = true; Atrib a = new Atrib(); if (Nombre.Text != "" && Tipo.Text != "" && Longitud.Text != "" && Clave.Text != "") { if (!busca_Repetidos(Nombre.Text)) { a.GS_nombre = convierteNombre(Nombre.Text); a.GS_tipo = type; a.GS_longitud = Convert.ToInt16(Longitud.Text); a.GS_dir_atributo = arch.Tam_archivo(); a.GS_indice = Convert.ToInt16(Clave.SelectedItem); a.GS_dir_indice = -1; a.GS_dir_sig_atrib = -1; ent_[index_entidad].GS_atrib.Add(a); if (ent_[index_entidad].GS_atrib.Count == 1) { ent_[index_entidad].GS_Dir_atributos = a.GS_dir_atributo; arch.Modifica_entidad(ent_[index_entidad].GS_Dir_entidad, ent_[index_entidad]); } arch.insertaAtributo(a); acomodaDirecciones(); actualizaData(); borrarDatos(); } else { MessageBox.Show("EL CAMPO YA EXISTE"); } } else { MessageBox.Show("NO SE PUEDEN DEJAR CAMPOS VACIOS"); } }
//lectura del archivo private void leerArchivo() { arch.GS_path = arch.GS_path; long cab = ent_[index_entidad].GS_Dir_atributos; ent_[index_entidad].GS_atrib.Clear(); Stream s = new FileStream(arch.GS_path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(s); try { s.Seek(cab, SeekOrigin.Begin); while (cab != -1) { Atrib aux = new Atrib(); aux.GS_nombre = r.ReadChars(30); aux.GS_tipo = r.ReadChar(); aux.GS_longitud = r.ReadInt16(); aux.GS_dir_atributo = r.ReadInt64(); aux.GS_indice = r.ReadInt16(); aux.GS_dir_indice = r.ReadInt64(); aux.GS_dir_sig_atrib = r.ReadInt64(); cab = aux.GS_dir_sig_atrib; if (cab != -1) { s.Seek(cab, SeekOrigin.Begin); } ent_[index_entidad].GS_atrib.Add(aux); } } catch { MessageBox.Show("NO EXISTEN DATOS PARA MOSTRAR"); } s.Close(); s.Dispose(); r.Close(); r.Dispose(); actualizaData(); }