Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1119434711
Vyzcheslav
2005-06-22 14:05
2005.08.14
Не убиваеться поток !!!


1-1122362108
Frozzen
2005-07-26 11:15
2005.08.14
Поясните плиз объявление структуры:


3-1120653967
Ольга
2005-07-06 16:46
2005.08.14
SQL - запрос на удаление по условию


1-1122367613
Зм1й
2005-07-26 12:46
2005.08.14
Сохранение динамического массива


1-1122290833
chili
2005-07-25 15:27
2005.08.14
Бинарные файлы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский