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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 20:58   #1
rok_9
 
Регистрация: 10.11.2012
Сообщений: 7
Восклицание Не работает функция: Найти ссылку с определённым текстом и нажать на неё(WB).

Сегодня я пытался сделать поиск ссылки в WB(Delphy 7) по тексту(не полному а только части от ссылки).Например ссылка: "Войти в Яндекс". А я для поиска ввожу "Войти в". Так вот я написал функцию и она почему то не работает... ищет только если текст полностью совпадает с текстом ссылки.

Код:
function FindAndPressTextLink(WebBrowser: TWebBrowser; Text: string; Click:boolean):boolean ; 
var 
  HtmlDocument: IHtmlDocument2; 
  HtmlCollection: IHtmlElementCollection; 
  HtmlElement: IHtmlElement; 
  I: Integer; 
//  h:string; 
  a:boolean; 
begin 
  Result:=false; 
  a:=false; 
  HtmlDocument := WebBrowser.Document as IHtmlDocument2; 
  HtmlCollection := HtmlDocument.All; 
  HtmlCollection := HtmlCollection.Tags('A') as IHTMLElementCollection; 

  for I := 0 to HtmlCollection.Length - 1 do begin 
    HtmlElement := HtmlCollection.Item(i, 0) as IHtmlElement; 
    // Сначала проверяем не совпала ли ссылка с текстом полностью
//   if   HtmlElement.InnerText = Text  then 
  if Text=HtmlElement.InnerText then 
  begin 
     Result:=true; 
     if Click then 
      HtmlElement.click; 

  end else begin //если нет пробуем найти заданный текст в тексте найденной ссылки
    if FindWordInString(Text,HtmlElement.InnerText)  then 
    begin 
     Result:=true; 
     if Click then 
      HtmlElement.click; 
    end; 
  end; 
  end; 
end;
А там для поиска текста в каждой ссылке использовал функцию поиска в стринге.

Код:
function FindWordInString(FindS,InS:string): Boolean; 
var 
 i,j:integer; 
 s:string; 
 bool:boolean; 
begin 
Result:=false; 
  For i:=0 to (Length(InS)-Length(FindS)+1) do 
  begin 
    for j:=1 to Length(FindS) do 
    begin 
      s:= s + InS[i+j]; 
      if s = FindS then 
        bool:=true; 
        break; 
    end; 
    s:=''; 
    if bool then 
    begin 
      Result:=true; 
      break; 
    end; 


  end; 
end;
Помогите, пожалуйста, исправить функцию.
Заранее благодарен.

Последний раз редактировалось rok_9; 10.11.2012 в 22:09.
rok_9 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ссылку с определённым текстом и нажать на неё(WB). rok_9 Компоненты Delphi 0 10.11.2012 16:39
Как программно нажать на Ajax ссылку через WebBrowser? Macwin C# (си шарп) 6 14.08.2012 11:29
Regular expression - найти последнюю точку и три символа после неё Enfiol C# (си шарп) 5 28.04.2012 08:58
Webbrowser нажать правильно на ссылку Зод Работа с сетью в Delphi 8 11.02.2012 10:00
Открыть Iexplorer и нажать на ссылку UnD)eaD)Snake Работа с сетью в Delphi 19 20.12.2007 22:08