Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2008, 09:50   #1
juiced
 
Регистрация: 16.03.2008
Сообщений: 3
По умолчанию помогите с поисковиком

всем доброго времени суток.
У меня такая проблема - нужно написать поисковик (типа google) в Delphi. только он должен искать на наличие заданной фразы или одного из слов не в инете, а среди нескольких (около 1500 шт.) файлов doc, txt, htm. Вот.
Не знаю даже с какой стороны подойти
Помогите, пожалуйста...
Заранее большое спасибо
juiced вне форума Ответить с цитированием
Старый 16.03.2008, 12:31   #2
Prototype
Пользователь
 
Регистрация: 25.07.2007
Сообщений: 24
По умолчанию

Этой функцией найдеш все файлы в дирректории
Код:
Procedure ScanDir(StartDir: String; Mask:string; List:TStrings);
Var SearchRec : TSearchRec;
Begin
  IF Mask ='' then Mask:= '*.*';
  IF StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
  IF FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
    Begin
     Repeat
        { Чтобы выполнение "не подвисало" }
      Application.ProcessMessages;
      IF (SearchRec.Attr and faDirectory) <> faDirectory then
         List.Add(StartDir + SearchRec.Name) else 
          IF (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
        Begin
          List.Add(StartDir + SearchRec.Name + '\');
            { Рекурсивный вызов }
          ScanDir(StartDir + SearchRec.Name + '\',Mask,List);
        End;
     Until FindNext(SearchRec) <> 0;
     FindClose(SearchRec);
   End; {IF}
end;
Затем по очереди грузи их в TstringList, и ищи строку этой функцией:

Код:
function GetSlovoPos(stroka,slovo: string): integer;
var
i,len,lens: integer;
s: string;
begin
result := -1;
len := length(slovo);
lens := length(stroka);
for i := 1 to lens-len do begin
 s := ZCopyText(stroka,i,i+len-1);
 if ZCopyText(stroka,i,i+len-1) = slovo then begin
  result := i+len;
 exit;
end;
end;
end;
Как искать строку
Код:
If GetSlovoPos(list.text,'искомое слово') <> -1 then MessageDlg('Строка найдена!',mtInformation,[mbok],0);
Вот только с *.doc надо грузить по другому
Prototype вне форума Ответить с цитированием
Старый 16.03.2008, 13:36   #3
juiced
 
Регистрация: 16.03.2008
Сообщений: 3
По умолчанию

спасибо большое... оказывается все так просто было
juiced вне форума Ответить с цитированием
Старый 11.05.2008, 06:38   #4
juiced
 
Регистрация: 16.03.2008
Сообщений: 3
По умолчанию

Прошло время, а проблема опять всплыла... Я так и не могу разобраться - как же все-таки осуществить поиск в вордовских DOC-файлах? может у кого-нибудь есть уже готовая процедура для этого. В DelphiWorld я ничего не нашел
juiced вне форума Ответить с цитированием
Старый 12.05.2008, 08:37   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В DelphiWorld я ничего не нашел
Плохо искал.
Вот тут четко описан поиск в ворде
http://delphiworld.narod.ru/base/msw...t_replace.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц