Ну куда подробнее-то?
Поиск заключается в том, что ты проверяешь данные на наличие некоторого шаблона, указанного пользователем. Т.е. пользователь вводит некоторый шаблон, а механизм поиска проходит по всем данным и пытается определить, соответсвуют данные этому шаблону или нет.
Естественно, рассматривается клиентский поиск. С поиском с помощью запросов (фактически, тут уже речь идет о фильтрации данных) ситуация в принцпе похожа, но там всю работу выполняет сервер БД, а тебе надо просто построить грамотный запрос.
Теперь возвращаемся к нашему случаю.
у тебя есть нетоторый источник данных (TTable, TQuery, TADOQuery и т.д., DataSet, короче), в котором открыт некоторый набор записей. В общем случае тебе надо перебрать все записи и все поля в каждой записи в поисках совпадения с введенным пользователем шаблоном.
Реализуется это, как не трудно догадаться, с помощью вложенных циклов. Внешний цикл перебирает записи, внутренний - поля. Т.к. в Дельфи нет итераторов и им подобных конструкций (для особо умных: я знаю, что их вполне можно реализовать своими силами или скачать готовые, однако стрелять из пушки по воробъям не стоит, не та задача), то внешний цикл реализуется в виде цикла While, внутренний - For (учитывая конструктивные особенности соответсвующих классов). почему не наоборот? Так получается быстрее. поверь на слово.
Внутри циклов идет собственно выяснение совпадения с шаблоном пользователя. Если совпадение обнаружено (в данном примере регистрозависимое вхождение подстроки), то перебор прекращается. Хитрая конструкция с флагом и двумя break'ами предназначена для корректного выхода из циклов. Все.
по поводу печати - берешь репортер, берешь книжку и читаешь и пробуешь.
|