Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Поиск по HTML-файлам


Автор: AbekIn3D 21.11.2009, 16:29
На форме есть:
1. Edit1
2. Button1
3. MyWebBrowser
4. Form8.Listbox1

Код

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
ts: String;
fs: TSearchRec;
begin
Application.CreateForm(Tform8, Form8);
Form8.Show;
Form8.ListBox1.Clear;

if FindFirst(getcurrentdir+'\data\lessons\*.htm',faAnyFile,fs) = 0 then
  begin
  repeat
  ts := fs.Name;
  Form8.MyWebBrowser.Navigate(getcurrentdir+'\data\lessons\'+ts);

while Form8.MyWebBrowser.ReadyState <> READYSTATE_COMPLETE do
  Application.ProcessMessages;

for i := 0 to Form8.MyWebBrowser.OleObject.Document.All.Length - 1 do
  begin
  if AnsiPos(AnsiLowerCase(Edit1.Text), AnsiLowerCase(Form8.MyWebBrowser.OleObject.Document.All.Item(i).InnerText)) <> 0 then
    begin
    Form8.ListBox1.Items.Add(ts);
    Break;
    end;
  end;
until FindNext(fs) <> 0;
FindClose(fs);
ShowMessage('Поиск по курсу завершен');
end;
end;


Все отлично работает, но в папке, где происходит поиск находятся 20 HTML-файлов, в которых присутствует Flash-анимация. Из-за этого поиск длится около минуты.

Вопрос:
Как сделать чтобы в  MyWebBrowser загружался только текст (без HTML-тегов)?

Если есть предложения получше - буду рад.
Подробное описание приветствуется

Автор: AbekIn3D 22.11.2009, 12:50
up!

Автор: Данкинг 22.11.2009, 13:16
Цитата(AbekIn3D @  21.11.2009,  16:29 Найти цитируемый пост)
Как сделать чтобы в  MyWebBrowser загружался только текст (без HTML-тегов)?

А что конкретно искать-то надо в .htm? 

Автор: AbekIn3D 22.11.2009, 13:45
Данкинг, 
только текст

Автор: Данкинг 22.11.2009, 14:06
Цитата(AbekIn3D @  22.11.2009,  13:45 Найти цитируемый пост)
только текст 

Ну так зачем тогда файл грузить в браузер? smile 

Автор: AbekIn3D 22.11.2009, 14:18
Данкинг, 
так вот и вопрос в том же. как вместе webbrowser использовать например memo? подробное описание приветствуетсяsmile

Автор: Данкинг 22.11.2009, 15:05
AbekIn3D, Memo1.Lines.LoadFromFile('file.htm').

Автор: AbekIn3D 22.11.2009, 15:14
Данкинг, 
это ясно, а как с остальным?

Автор: Демо 22.11.2009, 17:05
Цитата(AbekIn3D @  22.11.2009,  15:14 Найти цитируемый пост)
это ясно, а как с остальным?


А с чем остальным?
Нужно рассказывать, как в тексте искать нужные совпадения? Pos,Copy,Delete?

Автор: Данкинг 22.11.2009, 17:25
Цитата(AbekIn3D @  22.11.2009,  15:14 Найти цитируемый пост)
это ясно, а как с остальным? 

Дальше проходишь в цикле по строчкам и каждую из них анализируешь с помощью функций, упомянутых Демо. smile 

Автор: Hexel 22.11.2009, 19:58
мой вариант: если текст на русском, то используй обычные Pos
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  ts, CurrLine: String;
  fs: TSearchRec;
  f: Text;

begin

if FindFirst(getcurrentdir+'\data\lessons\*.htm',faAnyFile,fs) = 0 then
begin
  repeat
    ts := fs.Name;
    AssignFile(f, getcurrentdir+'\data\lessons\' + ts);
    Reset(f);
    while not eof(f) do
    begin
      Readln(f, CurrLine);
      if Pos(Edit1.Text, CurrLine) <> 0 then
      // нашли текст
      begin
        Form8.ListBox1.Items.Add(ts);
        Break;
      end;
    end; // while
    CloseFile(f);
  until FindNext(fs) <> 0;
end; // if

end; // procedure

сильно не ругать, писал без компилятора
если нужно искать текст на английском, еще придется отсекать тэги

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)