public void SetRegistro(int position, Registro registro) { registros[position] = registro; }
private bool Baja(TPagina nodo, Registro registro, string nombreArchivo) { bool b = false; WriteFile wf = new WriteFile(nombreArchivo); int pos; if (nodo.Tipo == H) { wf.InsertaRegistro(registro); // wf.InsertaRegistro(registro, nodo.M > 0 ? nodo.GetDireccion(Buscar(nodo, clave) - 1) : -1, nodo.M > 0 ? nodo.GetDireccion(Buscar(nodo, clave)) : -1); InsertaEnPag(nodo, clave, null, registro.Direccion); // nodo.SetDireccion(registro.Direccion, nodo.M - 1); if (nodo.M > 2 * d) { Divide(nodo); b = true; } else { wf.ModificaNodo(nodo); } } else { pos = Buscar(nodo, clave); b = Baja(nodo.GetPtrs(pos), registro, nombreArchivo); if (b) { if (pag_n.Tipo != H) { wf.InsertaNodoIR(pag_n); wf.ModificaNodoIR(nodo.GetPtrs(pos)); } else { wf.InsertaNodo(pag_n); wf.ModificaNodo(nodo.GetPtrs(pos)); } InsertaEnPag(nodo, clave, pag_n, pag_n.DireccionNodo); //escribir pag_n y actualizar nodo en pos //actualizar nodos despues de dividir if (nodo.M > 2 * d) { Divide(nodo); } else { b = false; if (nodo.Tipo != H) { wf.ModificaNodoIR(nodo); } else { wf.ModificaNodo(nodo); } //actualiza this nodo } } } return(b); }