Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.02.27;
Скачать: CL | DM;

Вниз

Дублирование Showmessage   Найти похожие ветки 

 
Демерго   (2010-12-06 11:04) [0]

Всем привет, подскажите почему происходит многоразовое срабатывание 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:06) [1]

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


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

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


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

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


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

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


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

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

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


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

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

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

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


 
Ega23 ©   (2010-12-06 11:15) [7]


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


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


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


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


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


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

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

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


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

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


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

а зачем тебе программа, если ты круче процессора?


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

Наверное чтобы делать за меня всю грязную работу. Ну там стирать, мыть посуду и т.д. :)


 
Jeer ©   (2010-12-06 11:49) [13]

Представляю себе состояние вещей, посуды, etc..


 
stas ©   (2010-12-06 12:01) [14]

Демерго   (06.12.10 11:15) [8]
Отладчик, точки останова для чего? )


 
Медвежонок Пятачок ©   (2010-12-06 12:08) [15]

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

То есть когда я еду в автобусе и закрываю глаза, то водила продолжает видеть дорогу?!!!

Чума!!!


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


> stas ©


щас буду мучать :) проверь мыло указанное у тебя в профиле


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


> Медвежонок Пятачок ©


сам то понял смысл приведенной аналогии?

ЗЫ: Я думаю ты мне уже достаточно помог по данному вопросу. Спасибо :)


 
Медвежонок Пятачок ©   (2010-12-06 12:21) [18]

а чем аналогия не понравилась?

Водила без понятия что кто-то там в салоне закрыл глаза.

Таймер тоже без понятия что кто-то там нажал или не нажал какую-то кнопку, про которую он ничего не знает.

Тайме не знает, что ему "типа нельзя тикать"
Водила не знает, что ему "типа нельзя видеть дорогу"


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

Есть скайп? Я за минуту наверно больше словами обьясню чем тут этими "ребусами".


 
Медвежонок Пятачок ©   (2010-12-06 12:29) [20]

Если отладчик не осилил, то вот это-то поюзай

...
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
   Tag := succ(Tag);
   Caption := Format("Вот сколько раз %d",[Tag]);
   timer4.Enabled:=true;
  end;
end;
end;


 
Ega23 ©   (2010-12-06 12:29) [21]

Удалено модератором


 
Демерго   (2010-12-06 12:46) [22]


> Медвежонок Пятачок ©  


Спасибо за код :) Цифры получились забавные 28... 56... :) Непонятно почему такие большие и почему каждый раз разные :)


 
Медвежонок Пятачок ©   (2010-12-06 12:48) [23]

Непонятно почему такие большие и почему каждый раз разные :)

Все по новой?
Сказка про белого бычка?


 
Демерго   (2010-12-06 12:50) [24]

Ладно, забей. Само срастется :)


 
Медвежонок Пятачок ©   (2010-12-06 12:55) [25]

for i4 := 0 to WebBrowser1.OleObject.Document.All.Length - 1 do
begin
 ShowMessage(WebBrowser1.OleObject.Document.All.Item(i4).InnerText);
......


 
icWasya ©   (2010-12-06 13:11) [26]

всего навсего надо было переставить вот эти строки
showmessage("Бинго");
timer4.Enabled:=false;


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

Переставить конечно надо, но судя по [20] и [22] этого мало.


 
Демерго   (2010-12-06 13:16) [28]


> icWasya ©


Гениально! все заработало как надо :) Жалко здесь плюсики нельзя ставить.

Спасибо ОГРОМНОЕ :)


 
Ega23 ©   (2010-12-06 13:19) [29]


> Гениально! все заработало как надо :)

[3], [7], [14], [15]...
Н-да...


 
Dennis I. Komarov ©   (2010-12-06 14:29) [30]


> Н-да...

И ты еще удивляешся?
Смотрел я за веткой: кто же не выдержит...



Страницы: 1 вся ветка

Текущий архив: 2011.02.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.009 c
3-1253354851
Sergey__
2009-09-19 14:07
2011.02.27
Fbserver


2-1291707614
novichek
2010-12-07 10:40
2011.02.27
определить ОС


2-1291636226
новичок95
2010-12-06 14:50
2011.02.27
организация кода


15-1289987238
Scott Storch
2010-11-17 12:47
2011.02.27
Жесткий баг XE


15-1290100289
Mitroshin
2010-11-18 20:11
2011.02.27
Несколько вопросов по переходу с D7 на D2010 (литература)