Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дублирование Showmessage


Страницы:   1 2

Демерго ©   (2010-12-06 11:04:00) 

Всем привет, подскажите почему происходит многоразовое срабатывание Showmessage в следующем коде. Причем количество срабатываний не фиксированное. От трех до пяти.

Вот код:

По окончанию загрузки страници ищем в ней текст "Гром"

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
begin
if s=1 then SearchAndHighlightText4('Гром');
end;

Вот алгоритм поиска и если текст найдем запускаем таймер 4.

procedure TForm1.SearchAndHighlightText4(aText4: string);
var
 i4: Integer;
begin
 for i4 := 0 to WebBrowser1.OleObject.Document.All.Length - 1 do
 begin
   if Pos(aText4, WebBrowser1.OleObject.Document.All.Item(i4).InnerText) <> 0 then
   begin
    timer4.Enabled:=true;
   end;
 end;
end;

Выдаем сообщени "бинго" и останавливаем таймер.

procedure TForm1.Timer4Timer(Sender: TObject);
begin
showmessage('Бинго');
timer4.Enabled:=false;
end;

После выполнения этого кода табличка "Бинго" выскакивает много раз. Подскажите почему.


Демерго   (2010-12-06 11:28:00) [21]

Конечно, куда мне до процессора. Но если создать чистый документ с одним словом "гром" то все равно "возможны варианты" :)


Медвежонок Пятачок   (2010-12-06 11:24:00) [22]

Слово встречается 1 раз. Так почему же таймер активируется многократно.

Это не ты решаешь, сколько и чего там раз встретилось, а процессор.
Причем  он это делает более точно чем ты.


Демерго   (2010-12-06 11:15:00) [23]


> а еще с тем, что таймер тикает быстрее чем ты жмешь на баттон
> в шоумессадж.


то есть пока я не нажму "ок" в мессадже, таймер продолжает тикать? хм, щас попробую


Ega23   (2010-12-06 11:15:00) [24]


> Слово встречается 1 раз. Так почему же таймер активируется
> многократно.


Вероятно, потому что WebBrowser1.OleObject.Document.All.Length больше единицы.


Демерго   (2010-12-06 11:13:00) [25]

это я понял еще с твоего первого поста. По логике он должен становится активным если находится искомое слово "гром"

if Pos(aText4, WebBrowser1.OleObject.Document.All.Item(i4).InnerText) <> 0 then timer4.Enabled:=true;

Слово встречается 1 раз. Так почему же таймер активируется многократно.


Медвежонок Пятачок   (2010-12-06 11:13:00) [26]

а почему ты вообще для шоумессадж используешь таймер, а не TChart?

С чем это связано?


Медвежонок Пятачок   (2010-12-06 11:11:00) [27]

а еще с тем, что таймер тикает быстрее чем ты жмешь на баттон в шоумессадж.


Медвежонок Пятачок   (2010-12-06 11:10:00) [28]

Это связано с тем, что таймер внутри SearchAndHighlightText4 много раз становится активным


Демерго   (2010-12-06 11:08:00) [29]

С чем это связанно? Слово "Гром" встречается один раз в вебдокументе.


Медвежонок Пятачок   (2010-12-06 11:06:00) [30]

потому что TForm1.Timer4Timer вызывается много раз


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо