Форум: "Начинающим";
Текущий архив: 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.51 MB
Время: 0.003 c