Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизПоиск в файле (быстрый) Найти похожие ветки
← →
Knop © (2005-07-26 06:47) [0]Здравствуйте уважаемые мастера.
Я как-то видел подобную тему, но сейчас не смог её найтии поэтому обращаюсь к вам. Задача примерно такая: WordsStringList содержит слова (в каждой строке одно слово) или обрывки слов (например соба) и имеется файл. В этом файле необходимо произвести поиск этих слов/обрывков слов (если в файле есть все слова, то True).
Я делаю примерно так: загружаю файл в FileStringList и сравниваю все строки файл pos"ом с первой строкой WordsStringList, потом со второй и т.д. если слово/его часть присутствует в WordsStringList, то result:=True, иначе result:=False и exit
Но нужен более быстрый способ.
← →
TUser © (2005-07-26 07:41) [1]Отсортировать список и применить бинарный поиск
← →
Fay © (2005-07-26 07:46) [2]2 Knop © (26.07.05 6:47)
Какого размера файл?
← →
Fay © (2005-07-26 07:50) [3]2 Knop © (26.07.05 6:47)
> WordsStringList содержит слова (в каждой строке одно
> слово) или обрывки слов (например соба)
> если слово/его часть присутствует в WordsStringList,
> то result:=True,
Я что-то не врубаюсь. Ты ищешь вхождения в части слова? А нужно не наоборот?
← →
Knop © (2005-07-26 08:03) [4]
> > если слово/его часть присутствует в WordsStringList,
правильнее будет так: если слово/его из WordsStringList присутствует в одной из строк FileStringList
> Какого размера файл?
Файлов много, но не думаю, что размер одного файа будет превышать 100 кб (html-страницы)
> Отсортировать список...
Какой именно? WordsStringList?
> ...и применить бинарный поиск
Пример можно?
← →
Anatoly Podgoretsky © (2005-07-26 09:21) [5]TUser © (26.07.05 07:41) [1]
Не пойдет, слова то неизвестны.
Knop © (26.07.05 06:47)
Не знаю, что за компонент такой FileStringList, но может у него есть свойство Text, а еще лучше загрузить файл в строку, поменьше потребуется ресурсов и скорость самая максимальная.
← →
Knop © (2005-07-26 11:59) [6]
> Не знаю, что за компонент такой FileStringList
Это я для облегчения восприятия назвал. FileStringList - стринглист, в котором хранятся строки из файла, WordsStringList - хранит слова.
> а еще лучше загрузить файл в строку
Это как? Грузить файл в StringGrid, а потом некой переменной s в цикле приплюсовывать строки? Так мне потом надо будет сохранить эту переменную в файл, а для этого опять разбивать настроки
← →
Knop © (2005-07-26 12:09) [7]
> Грузить файл в StringGrid
Очепятался. StringList
← →
Anatoly Podgoretsky © (2005-07-26 13:43) [8]Knop © (26.07.05 11:59) [6] Это я для облегчения восприятия назвал.
Ты добился обратной вещи.
← →
Anatoly Podgoretsky © (2005-07-26 13:45) [9]Про свойство Text я писал?
А про загрузку в строку?
← →
Knop © (2005-07-27 06:50) [10]Странно. Если искать слово так:
if pos(LowerCase(SearchString), LowerCase(k.Text)) > 0 then
ищет нормально. А если так:if pos(SearchString, k.Text) > 0 then
то ничего не находит
SearchString - строка, которую нужно найти в файле. В переменную k загружен текст из файлаfunction LowerCase(s: string): string;
var
i: integer;
begin
result := s;
for i := 1 to length(result) do
if (result[i] in ["A".."Z", "А".."Я"]) then
result[i] := chr(ord(result[i]) + 32);
end;
← →
Knop © (2005-07-27 14:22) [11]Почему так? Никто не знает?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c