logo search
TurboProlog / Документация / TOM_2

Key_search/4 Внешняя База Данных

Назначение Находит ключ в B+ дереве

Обращение key_search(Бданных,указатель Бд,Ключ,Ссылка)

Домены (db_selector,bt_selector,string,ref)

Шаблоны описания (вх,вх,вх,вх)

аргументов

Описание key_search находит ключ в B+ дереве. Если Ключ

найден, номер ссылки базы данных, записанный под этим

ключом, будет возвращен в Ссылка. Если Ключ не

найден, предикат будет несогласован, однако

внутренний указатель B+ дерева будет указывать на

ключ, следующий непосредственно за тем, где Ключ был

размещен. Вы можете использовать key_current для

возвращения ключа и номера указаталя базы данных для

этого ключа.

Неудачное Если ключ не найден.

завершение

Ошибки 1034 База данных не открыта.

1052 Неправильный переключатель B+ дерева для данной

базы данных.

Пример

domains

Db_selector = mydba

predicates

locate(Db_selector,Bt_selector,STRING)

clauses

locate(Db_selector,Bt_selector,STRING):-

key_search(Db_selector,Bt_selector,STRING,_),!,

write("\nExact match:").

locate(_,_,_):-write("\nNot exact match:").

goal

db_open(mydba,"register.bin",in_file),

bt_open(mydba,"person_name",Bt_selector),

locate(mydba,Bt_selector,"Hoffman"),

key_current(mydba,Bt_selector,KEY,REF),

write("\nKEY=",KEY,", REF=",REF).

keypressed/0

Назначение Проверяет была ли нажата клавиша

Обращение keypressed

Описание Используя keypressed, вы можете проверить, нажата ли

клавиша, без чтения нажатой клавиши. keypressed

согласуется, если была нажата любая клавиша; иначе

предикат не согласуется.

Неудачное Если клавишы не были нажаты.

завершение

Ошибки Нет ошибок.

Пример

predicates

count(inneger)

loop

clauses

count(X):-keypressed,!,write("\nСчитали за: ",X).

count(X):-X1=X+1,count(X1).

loop:-

write("\n\nНажмите клавишу"),

count(0),

readchar(CH),/* Знак может быть прочитан

после того, как он определен */

write("\nВы нажали: ",CH),

loop.

goal

loop.