} // Fin de constructor único
 
 
 
 // ===========================================================
 // MÉTODO PARA EL BOTÓN DE INSERTAR REGISTRO
 // -----------------------------------------------------------
 // Serializa el objeto desde las cajas de texto y verifica
 // si los datos tienen formato coherente, si está activada la
 // checkbox, en vez de agregarlo se sobreescribe el archivo.
 // ===========================================================
 private void InsertarBtnClick(object sender, EventArgs e) {
   try {
     // Serialización del objeto a escribir
     string nombre    = nombreTB.Text;
     string ocupacion = ocupacionTB.Text;
     short  edad      = Int16.Parse(edadTB.Text);
     bool   estaVivo  = vivo.Checked;
     float  altura    = Single.Parse(alturaTB.Text);
     
     if ( /* Realizar comprobaciones preventivas */
       nombre.Length > 0 && ocupacion.Length > 0 &&
       edad > 0          && altura > 0
     ) { /* Sin campos vacíos y edad/altura positivas */
       Persona registro = new Persona(
         nombre, ocupacion, edad, estaVivo, altura
       ); // Fin de instanciar objeto Persona
       
       bool insertado = IOBinario.EscribirRegistro(ruta, limpiar.Checked, registro);
       
       if (insertado) { // Actualizar la vista tras insertar registro
         MessageBox.Show(Form.ActiveForm, "Registro insertado con éxito!");
         nombreTB.Text    = "";
         ocupacionTB.Text = "";
         edadTB.Text      = "";
         alturaTB.Text    = "";
         limpiar.Checked  = false;
       } // Fin de actualizar vista sólo si se insertó el registro
     } else {
       MessageBox.Show(Form.ActiveForm, "La edad y la altura deben ser mayores a 0, tampoco dejes vacío algún campo.");
     } // Fin de realizar validación de datos
   } catch (FormatException) {
     MessageBox.Show(Form.ActiveForm, "Error de formato, escribe números en la edad y la altura.");
   } catch (OverflowException) {
     MessageBox.Show(Form.ActiveForm, "La altura o la edad tienen números muy grandes");
   } // Fin de atrapar posibles errores
 } // Fin de insertar registro en el archivo
Beispiel #2
0
 } // Fin de obtener una lista de objetos de cierto modelo
 
 
 
 // ==============================================================================
 // ESCRIBIR O SOBREESCRIBIR UN OBJETO EN ARCHIVOS BINARIOS
 // ------------------------------------------------------------------------------
 // Regresa un booleano de confirmación para controlar qué pasa si no se inserta
 // ==============================================================================
 public static bool EscribirRegistro(string ruta, bool limpiar, Persona persona) {
   BinaryWriter bw       = null;
   bool insercionExitosa = false;
   
   try { // Buscar errores de lectura y escritura
     if (File.Exists(ruta)) {
       bw = new BinaryWriter(
         new FileStream(
           ruta, /* Archivo a escribir */
           ((limpiar)? FileMode.Create : FileMode.Append),
           FileAccess.Write
         ) /* Fin de creación de stream */
       ); // Fin de creación de lector binario
       
       // Insertando el modelo de datos en el stream
       bw.Write(persona.Nombre);    // String
       bw.Write(persona.Ocupacion); // String
       bw.Write(persona.Edad);      // Int16
       bw.Write(persona.EstaVivo);  // Boolean
       bw.Write(persona.Altura);    // Single
       
       insercionExitosa = true;
     } else { // No existe el archivo
       MessageBox.Show(
         "No existe el archivo para escribir!",
         "Error de directorio",
         MessageBoxButtons.OK,
         MessageBoxIcon.Error,
         MessageBoxDefaultButton.Button1
       ); // Fin de mostrar error
     } // Fin de ver si existe o no el archivo
   } catch (IOException e) {
     MessageBox.Show(e.Message);
   } finally { if (bw != null) bw.Close(); }
   
   return insercionExitosa;
 } // Fin de capturar error de lectura y escritura