Этот сценарий я уже приводил в теме о кулинарной книжке,
но считаю, что он заслуживает того, чтобы находиться в отдельной теме. Привожу этот сценарий полностью и с комментариями:
========================================
** Очищаем список (внимание! этот список использовать только для поиска!):
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 тэгов, иначе будет ужасно тормозить Мы же не с мр3-файлами
в данном случае работаем :)
C любовью, ваш as-master :)