![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дублирование Showmessage
Демерго © (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 вызывается много раз