Beispiel #1
0
 public void SetRegistro(int position, Registro registro)
 {
     registros[position] = registro;
 }
Beispiel #2
0
        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);
        }