Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.07.2011, 00:32
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию Баг с WebBrowser

Небольшой баг, пишу так:
Код:
for i := 1 to 1 do begin
WebBrowser1.Navigate('http://www.ya.ru');
Sleep(1500);
WebBrowser1.Navigate('http://www.erepublik.com/en');
Sleep(2000);

В общем первую ссылку Веббраузер вообще не воспринимает. Хоть какую задержку ставь он всё равно не переходит по этой ссылке. А вот по 2ой переходит. Но если я вторую поставлю к примеру ya.ru то он перейдёт, в общем не зависит от ссылки, а зависит от места. Что это за баг?
Ответить с цитированием
  #2  
Старый 02.07.2011, 00:44
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

так он у тебя токо начнет переходить и тут же ты переходишь на другой
равносильно этому
Код:
WebBrowser1.Navigate('http://www.ya.ru');
WebBrowser1.Navigate('http://www.erepublik.com/en');
Sleep тормозит всю форму соответственно и сайт не грузится
Код:
for i := 1 to 1 do begin
а это что за крутизна?
Ответить с цитированием
  #3  
Старый 02.07.2011, 00:52
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

Да это так. А как мне сделать, что бы он переходил с начало по одной ссылки и потом по второй?
Ответить с цитированием
  #4  
Старый 02.07.2011, 01:55
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

не пойму а что требуется? Показать человеку один сайт потом другой?
мне такое в голову пришло

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    WebBrowser1: TWebBrowser;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Ibrow: integer;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
case Ibrow of
 0: WebBrowser1.Navigate('http://www.ya.ru');
 1: WebBrowser1.Navigate('http://www.erepublik.com/en');
end;
inc(Ibrow);
if   Ibrow = 2 then Timer1.Enabled:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Ibrow:=0;
Timer1.Enabled:=true;
end;
end.

Последний раз редактировалось ALexandr555, 02.07.2011 в 14:52.
Ответить с цитированием
  #5  
Старый 02.07.2011, 09:01
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

Спасибо. Нет, программа должна перескакивать по ссылкам просто и тырить исх. код, в общем подожду решения ещё до вечера, если не будет, то буду твоё использовать.
Ответить с цитированием
  #6  
Старый 02.07.2011, 12:35
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

чем мое не устраивает? А если исходдный код то можно куда проще не через такое, но ладно жди решений)
Ответить с цитированием
  #7  
Старый 02.07.2011, 13:42
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

Просто в твоём большая нагрузка будет из-за таймеров (я так думаю), а мне надо около 70 ссылок переходить.
Ответить с цитированием
  #8  
Старый 02.07.2011, 14:38
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

а зачем тебе много таймеров добавлять,одного достаточно.
добавь какой нить список с ссылками,например Memo,
объяви глобальную переменную
i:Integer;
и далее код
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=0;
Timer1.Enabled:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
WebBrowser1.Navigate(Memo1.Lines[i]);
Inc(i);
if i=memo1.Lines.Count-1
then Timer1.Enabled:=false;
end;
Ответить с цитированием
  #9  
Старый 02.07.2011, 14:51
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Snake22, лучше бы прочитал предыдущие сообщения особенно #4 и #5
Ответить с цитированием
  #10  
Старый 02.07.2011, 15:04
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

да,один хрен.он, помоему, подумал что ему под каждую ссылку придектся таймер создавать
Цитата:
Просто в твоём большая нагрузка будет из-за таймеров
таймер - самый тот вариант для этой задачи
Ответить с цитированием
  #11  
Старый 02.07.2011, 15:17
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

Хорошо, таймер так таймер, спасибо
Ответить с цитированием
  #12  
Старый 02.07.2011, 15:47
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Я #7 пропустил сорри, так вот если ему нуже исходный код то
WebBrowser1.Navigate(); глупости
Код:
IdHTTP1.Get();
IdHTTP1.Get();
IdHTTP1.Get();
...
и не надо никаких таймеров

Последний раз редактировалось ALexandr555, 02.07.2011 в 15:50.
Ответить с цитированием
  #13  
Старый 02.07.2011, 17:13
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

Да гет-то хорошо, я знаю. Но он не вытаскивает все элементы страницы. Я пытался через гет, но через него исх. код выглядил очень тонко. И вот нашёл вот такой код в инете:

Код:
procedure TForm1.GetCode;
var
    iall : IHTMLElement;
begin
   if Assigned(WebBrowser1.Document) then
   begin
     iall := (WebBrowser1.Document AS IHTMLDocument2).body;

     while iall.parentElement <> nil do
     begin
       iall := iall.parentElement;
     end;
     memo1.Text := iall.outerHTML;
   end;
end;

Да и вообще зря эта тема, извините что побеспокоил, просто этим способом не получится мне сделать программу, сейчас создам новую тему может подскажут.
Ответить с цитированием
  #14  
Старый 03.07.2011, 11:19
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
  WebBrowser1.Navigate('http://www.delphisources.ru/');
  while WebBrowser1.ReadyState<>READYSTATE_COMPLETE do
    Application.ProcessMessages;

  WebBrowser1.Navigate('http://msdn.microsoft.com/');
  while WebBrowser1.ReadyState<>READYSTATE_COMPLETE do
    Application.ProcessMessages;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025