IfbBecameTooFew then

RemoveItem(iLeft + 1);

// ВАЖНО!

 

// ДО вызова процедуры RemoveItem

// переменная bBecameTooFew = True,

// если слияние страниц, подчинённых записи R, состоялось,

// bBecameTooFew = False, если не было слияния.

 

// ПОСЛЕ вызова процедуры RemoveItem

// переменная bBecameTooFew = True,

// если на САМОЙ записи R (а не на её потомках)

// стало слишком мало ключей,

// bBecameTooFew = False, если ключей достаточно.

 

if(lStartPage = 0) andbBecameTooFew then

Begin

// Единственный ключ на корневой странице удалён.

// Значит, осталась ссылка на единственного потомка.

 

lDied := R.mLink[0];

SeekAndRead(lDied, RAux);

 

R := RAux;

// Это важно!

// Только ЗДЕСЬ содержимое стартовой страницы

// заменится содержимым её единственного потомка.

 

RAux.nData := 0;

SeekAndWrite(lDied, RAux);

// Компонент с номером lDied погиб???

end;

 

SeekAndWrite(lStartPage, R);

end;

 

Begin

lRightest := FileSize(F);

 

IflRightest < 1 then

Begin

MsgBox('lFS < 1');

Application.Terminate;

Exit;

end;

 

iflRightest < 1 + lStartPage then

Begin

MsgBox('lFS < 1 + lStartPage');

Application.Terminate;

Exit;

end;

 

SeekAndRead(lStartPage, R);

 

IfR.mLink[0] < 0 then

Begin

// Сюда попали => страница терминальная

 

fori := 1 toR.nData do

Begin

iR := StringCompare(sFind, R.mData[i]);

 

ifiR = 0 then

Begin

RemoveItem(i);

// ТОЛЬКО ЗДЕСЬ удаляется ключ!

// bBecameTooFew пойдёт к процедуре-предку.

 

SeekAndWrite(lStartPage, R);

Exit;

end;

end;

 

MsgBox('Ключ "' + sFind + '" не найден!');

bFound := False;

Exit;

end;

 

// Сюда попали => страница НЕтерминальная

 

fori := 1 toR.nData do

Begin

iR := StringCompare(sFind, R.mData[i]);

 

ifiR = 0 then

Begin

bFound := True;

 

lRightest := R.mLink[i - 1];

SeekAndRead(lRightest, RAux);

// В RAux - левый потомок ключа R.mData[i].

 








Дата добавления: 2015-08-21; просмотров: 448;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.