Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.02.27;
Скачать: [xml.tar.bz2];

Вниз

Дублирование 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.004 c
15-1290157965
И. Павел
2010-11-19 12:12
2011.02.27
Обновление 500 копий программы с сетевого диска.


10-1170751259
Juice
2007-02-06 11:40
2011.02.27
Как заставить нормально работать Early Binding?


2-1291476299
Burn
2010-12-04 18:24
2011.02.27
Vert ScrollBar + TDBGrid


15-1289472401
hattak
2010-11-11 13:46
2011.02.27
PlugIn для Internet Explorer


2-1291739016
Ux
2010-12-07 19:23
2011.02.27
Ошибка 11004





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский