Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2015, 11:08   #11
keholem
Пользователь
 
Регистрация: 20.08.2015
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
1) Становишься на строку, с которой будешь отлаживать
2) Жмешь F5 - Появляется точка прерывания (бряк)
3) Просто запускаешь программу (В меню Run выбери запуск и отладчиком)
4) Прога брякается на бряке - начинается отладка
5) Мышкой наводишь на переменную, или свойство - в хинте вылезает ее значени
6) Жмешь F7 - отладка проскакивает на следующий оператор вглубь программы - происходит трассировка (или пошаговка, если по русски)

Скорее всего какой-то из интерфейсов не может быть использован. Нужно знать на какой строке ошибка, поэтому делай пошаговку.
Я так понял ошибка в этой строке:

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
tbls: IHTMLElementCollection;
c: IHTMLElement;
d: IHTMLDocument2;
all: IHTMLElementCollection;
begin
WebBrowser1.Navigate('http://localhost/');
d := IHTMLDocument2(WebBrowser1.Document );
all := d.all;
tbls := IHTMLElementCollection(all.tags('DI V'));
for i := 0 to tbls.length - 1 do
begin
c := tbls.item(i, 0) as IHTMLElement;
if c.id = 'error' then
begin
showmessage(c.innerHTML);
end;
end;
end;

Делал так:

Поставил курсор на строке WebBrowser1.Navigate('http://localhost/');
и нажал F5
Дальше на F9 запустил
Нажал на форме на Button1 и в delphi начал нажимать Step Over
До строки for i := 0 to tbls.length - 1 do дошел опять нажал Step Over и вылезла ошибка: http://2.firepic.org/2/images/2015-0...4kyosw5r5t.png
Изображения
Тип файла: jpg 1.jpg (27.0 Кб, 128 просмотров)
keholem вне форума Ответить с цитированием
Старый 21.08.2015, 11:57   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

сделай трассировку еще раз. После того, как пройдет строку с tbls := IHTMLElementCollection(all.tags('DI V')); наведи курсор мышки на tbls и посмотри чему он равен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2015, 12:08   #13
keholem
Пользователь
 
Регистрация: 20.08.2015
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
сделай трассировку еще раз. После того, как пройдет строку с tbls := IHTMLElementCollection(all.tags('DI V')); наведи курсор мышки на tbls и посмотри чему он равен.
вот: http://6.firepic.org/6/images/2015-0...mtaqmw2ab7.png
keholem вне форума Ответить с цитированием
Старый 21.08.2015, 13:32   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну. Ты понимаешь что там в переменных за значения и что они говорят?
У тебя судя по всему ошибка не в этой строке возникает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2015, 13:41   #15
keholem
Пользователь
 
Регистрация: 20.08.2015
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну. Ты понимаешь что там в переменных за значения и что они говорят?
Неа.
Цитата:
Сообщение от Stilet Посмотреть сообщение
У тебя судя по всему ошибка не в этой строке возникает.
А в какой?
keholem вне форума Ответить с цитированием
Старый 21.08.2015, 13:57   #16
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

keholem, Попробуйте вот так.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  tbls: IHTMLElementCollection;
  c: IHTMLElement;
  d: IHTMLDocument2;
begin
  WebBrowser1.Navigate('http://localhost/');
  d := WebBrowser1.Document as IHTMLDocument2;
  tbls := d.all.tags('DIV') as IHTMLElementCollection;
  for i := 0 to pred(tbls.length) do
  begin
    c := tbls.Item(i, varEmpty) as IHTMLElement;
    if Assigned(c) and (c.id = 'error') then
    begin
      showmessage(c.innerHTML);
    end;
  end;
end;
Dmitry33RU вне форума Ответить с цитированием
Старый 21.08.2015, 14:02   #17
keholem
Пользователь
 
Регистрация: 20.08.2015
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Dmitry33RU Посмотреть сообщение
keholem, Попробуйте вот так.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  tbls: IHTMLElementCollection;
  c: IHTMLElement;
  d: IHTMLDocument2;
begin
  WebBrowser1.Navigate('http://localhost/');
  d := WebBrowser1.Document as IHTMLDocument2;
  tbls := d.all.tags('DIV') as IHTMLElementCollection;
  for i := 0 to pred(tbls.length) do
  begin
    c := tbls.Item(i, varEmpty) as IHTMLElement;
    if Assigned(c) and (c.id = 'error') then
    begin
      showmessage(c.innerHTML);
    end;
  end;
end;
Спасибо большое! Только работает почему-то только когда страницу второй раз загружает...
keholem вне форума Ответить с цитированием
Старый 21.08.2015, 14:07   #18
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Цитата:
Сообщение от keholem Посмотреть сообщение
Спасибо большое! Только работает почему-то только когда страницу второй раз загружает...
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  tbls: IHTMLElementCollection;
  c: IHTMLElement;
  d: IHTMLDocument2;
begin
  WebBrowser1.Navigate('http://localhost/');
  Application.ProcessMessages();
  d := WebBrowser1.Document as IHTMLDocument2;
  tbls := d.all.tags('DIV') as IHTMLElementCollection;
  for i := 0 to pred(tbls.length) do
  begin
    c := tbls.Item(i, varEmpty) as IHTMLElement;
    if Assigned(c) and (c.id = 'error') then
    begin
      showmessage(c.innerHTML);
    end;
  end;
end;
Dmitry33RU вне форума Ответить с цитированием
Старый 21.08.2015, 14:17   #19
keholem
Пользователь
 
Регистрация: 20.08.2015
Сообщений: 11
По умолчанию

Если просто WB.navigate делать то помогает, а если вот так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  EncodedStr: string;
  Header, Post: OleVariant;
  tbls: IHTMLElementCollection;
  c: IHTMLElement;
  d: IHTMLDocument2;
begin
  EncodedStr := 'text=123456789';
  Post := VarArrayCreate([0, Length(EncodedStr) - 1], varByte);
  for i := 1 to Length(EncodedStr) do
    Post[i - 1] := Ord(EncodedStr[i]);
  Header := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
  WebBrowser1.Navigate('http://localhost/', EmptyParam,EmptyParam, Post, Header);
  Application.ProcessMessages();
  d := WebBrowser1.Document as IHTMLDocument2;
  tbls := d.all.tags('DIV') as IHTMLElementCollection;
  for i := 0 to pred(tbls.Length) do
  begin
    c := tbls.Item(i, varEmpty) as IHTMLElement;
    if Assigned(c) and (c.id = 'error') then
    begin
      showmessage(c.innerHTML);
    end;
  end;
end;
keholem вне форума Ответить с цитированием
Старый 21.08.2015, 14:53   #20
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Код:
Application.ProcessMessages();
замените на

Код:
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
Application.ProcessMessages();
end;
Dmitry33RU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка текста в WebBrowser nibufep Общие вопросы Delphi 2 17.08.2015 15:22
Проверка наличия поля в webbrowser Dima170792 Работа с сетью в Delphi 4 01.12.2013 18:48
Проверка окончания загрузки страницы в WebBrowser Vladimir K. Работа с сетью в Delphi 8 31.10.2010 19:20
Проверка текста в webbrowser nenoob1 Работа с сетью в Delphi 3 07.08.2010 02:17
Проверка наличия элемента в Webbrowser Verst Общие вопросы Delphi 6 29.11.2009 16:56