она должна быть рассчитана на
ForEach, именно поэтому мы разместили ее в теле процедуры PrintAll, Осталось в тело главной программы поместить оператор
PrintAll (BookList) ;
перед оператором уничтожения коллекции. Если Вы запустите таким образом подготовленную программу на счет, на экран будет выведено:
Джордейн Р .
Справочник программиста персональных компьютеров типа IBM PC,
XT и AT
Финансы и статистика, 1991, 544
Шелдон
Язык Си для профессионалов
И. В. К. -СОФТ, 1991, 383
Скэнлон Л.
Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера
Радио и связь, 1991, 336
Йенсен К., Вирт Н.
Паскаль . Руководство для пользователя и описание языка
Финансы и статистика, 1982, 151
Все действия по выводу содержимого коллекции реализуются методом ForEach, который для собственно вывода каждого очередного элемента обращается к процедуре PrintBook.
Точно таким же образом реализуется обращение к методам FirstThat и LastThat. Например, если нам потребуется отыскать в каталоге запись, содержащую слово «Вирт» в noлe Autor, можно добавить в программу следующие строки
Procedure SearchAutor(BookList: Pcollection; A: String);
Function FindAutor(P: PBook): Boolean; far;
begin
FindAutor := pos(А, Р.Autor) <>0
end; {FindAutor}
var
Book: PBook;
begin {SearchAutor}
Book := BookList.FirstThat(FindAutor);
if Book = NIL then
WriteLn('Heт автора ',А)
else with Book do
begin
WriteLn;
PrintItern(Autor,Title,PubHouse,Year,Pages)
end
end; {SearchAutor}
В тело главной программы следует добавить оператор
SearchAutor(BookList,'Вирт');
Собственно поиск элемента коллекции реализуется оператором
Book := BookList.FirstThat(FindAutor);
который для этих целей обращается к методу TCollection.FirstThat. В этом методе реализуется последовательный анализ всех элементов коллекции, начиная с самого первого (с индексом 0), причем для анализа используется вызов функции FindAutor. Как видим, эта функция нужным образом анализирует очередную запись и возвращает True, если условие поиска удовлетворено. Метод FirstThat возвращает указатель на элемент коллекции, для которого удовлетворено условие поиска, или NIL, если этому условию не отвечает ни один элемент. Таким образом, оператор
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий