Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Универсальный скрипт поиска!
as-masterДата: Воскресенье, 14 Октября 2007, 14:47 | Сообщение # 1
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Этот сценарий я уже приводил в теме о кулинарной книжке,
но считаю, что он заслуживает того, чтобы находиться в отдельной теме.

Привожу этот сценарий полностью и с комментариями:
========================================
** Очищаем список (внимание! этот список использовать только для поиска!):
ListBoxAddItem("SongList","RESET")
SongListReset()
** Переводим поисковый запрос в нижний регистр:
find$=LOW(find$)
** Запускаем поиск:
For I=1 To NOL(list$)
pos=0
string$=StrFromFile(list$,I,1)
** Переводим в нижний регистр:
temp$=LOW(string$)
** Ищем позицию поискового запроса в данной строке:
pos=POS(find$,temp$)
If (pos>0) Then
** значит, такое сочетание знаков в строке есть.
** Тогда заносим строку в список найденного:

ListBoxAddItem("SongList","string$")
** Следующие три строки можно убрать - они служат только для того,
** чтобы выводить результаты поиска прямо во время поиска:

numfind=numfind+1
mess$='Выполняется поиск, подождите... Найдено: '+CHAR(numfind)
LoadText("Text","mess$")
Refresh("")
End
Next
I
** Сохраняем список:
path$='<Temp>\find.tmp'
SongListSave("SongList","path$")
========================================

В данном скрипте переменные обозначают:

find$ - поисковый запрос; это то, что ввели в строку поиска (в эдитбокс)
list$ - путь к файлу, в котором ищем
path$ - путь к файлу, в который сохраняем результаты

В результате работы данного скрипта будут найдены все строки, содержащие
поисковый запрос find$, и записаны во временный файл.

Можно обойтись и без объекта SongList, а напрямую записывать найденные
строки в файл. Тогда в сценарии строку:

ListBoxAddItem("SongList","string$")

надо заменить строкой:

rv=StrToFile(path$,string$,TRUE,TRUE)

а в начале сценария тогда придется очищать этот временный файл,
то есть добавить в самое начало пару строк:

clear$=''
rv=StrToFile(path$,clear$,FALSE,FALSE)

Как будет быстрее работать: с занесением в список или напрямую
с записью в файл - мне так и не удалось выяснить. Оба варианта
работают одинаково и достаточно быстро. Поэтому я предпочел вариант
с использованием списка.

Кстати, в списке (в объекте ListBox) не забудьте отключить к чертям
поиск ID3 тэгов, иначе будет ужасно тормозить smile Мы же не с мр3-файлами
в данном случае работаем :)

C любовью, ваш as-master :)


Да пребудет с вами ММВ!
 
s3r9i0Дата: Пятница, 23 Мая 2008, 17:39 | Сообщение # 2
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
Огромное спасибо за идею!
Планирую издать в электронном виде наш информационно-телефонный справочник, думал программеров подключать...
а сейчас чухнул, что будет и удобнее и интереснее сделать самому ))
 
  • Страница 1 из 1
  • 1
Поиск: