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

Вниз

Несколько WebBrouserофф   Найти похожие ветки 

 
guru-ru   (2006-03-31 09:38) [0]

Есть пробемка. Вот у меня есть процедура

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
begin
//IsFirst Логическая
if IsFirst then
  begin
     webbrowser1.Navigate(listbox1.items.strings[x]);
     x:=x+1;
     // эти 2 строчки проблемные, т.к. после вызова первой другой браузер может
     //также выполнить ее и в итоге разные браузеры загрузят одну и туже
     //строку и потом только пойдет увеличение х:=х+1
     isfirst:=false;
  end
  Else
  begin
     memo1.lines.add(" А вот сюды мне нужно передать страницу, которую именно этот браузер грузил!!!");
     IsFirst:=true;
  end;

end;

затем у меня динамически создается 10 экземпляров браузеров и вот первый вопрос
как мне вновь созданым браузерам назначить эту процедуру
2)После назанчиения появятся проблемы обозначенные в коментариях
3)Можно как-то с помощью браузера получить код-ответ (400 NotFound, 200 Ok,.....)


 
Сергей М. ©   (2006-03-31 10:53) [1]


> как мне вновь созданым браузерам назначить эту процедуру


procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var Browser: TWebBrowser;
begin
 Browser := Sender as TWebBrowser;
.. работаем с Browser ..
end;

...

for i:= 0 to 9 do
begin
 Browsers[i] := TWebBrowser.Create(...);
 Browsers[i].OnComplete := WebBrowserDocumentComplete;  
end;


 
guru-ru   (2006-03-31 12:46) [2]

Спасибо, а как насчет
    webbrowser1.Navigate(listbox1.items.strings[x]);
    x:=x+1;

можно както показать программе что эти 2 строчки разделять нельзя, нужно их выполнять в паре, не выделяя время другим процессам


 
Сергей М. ©   (2006-03-31 12:59) [3]


> guru-ru   (31.03.06 12:46) [2]


Такой подход изначально неверный.

Navigate() - это асинхронный метод.
Успешный его вызов не означает полное выполнение запроса, при этом указанный запрос лишь запускается на выполнение в фоне.

Объясни смысл и назначение переменной X ..


 
guru-ru   (2006-03-31 13:16) [4]

Х считает какой элемент из списка нужно взять. А то что асинхронный я знаю. но думал, что может можно как в сокетах сделать блокирующий режим.
Есть предложения?


 
Сергей М. ©   (2006-03-31 13:29) [5]

Есть.

Полностью пересмотреть логику приложения.

И "сокеты" здесь ни при чем - транспортный уровень здесь тебе не доступен.

Возьми, например, да пропиши каждому экз-ру браузера в св-ве Tag нужное значение индекса.


 
guru-ru   (2006-03-31 14:30) [6]

Таг не поможет, ведь эти гады так и будут выбирать Х в произвольном порядке. Во жопа. а нет ничего чтобы создать защищеный участок кода?


 
Сергей М. ©   (2006-03-31 15:04) [7]

critical sections

но использовать их в однопоточном приложении как минимум не разумно


 
guru-ru   (2006-03-31 16:31) [8]

ну если сразу 10 асинхронных браузера работает это разве уже не многопоточность? конечно не в прямом смысле, но всеже...


 
Сергей М. ©   (2006-03-31 16:52) [9]

Еще раз - пересматривай логику.

Она у тебя расчитана скорей на синхронность, нежели на асинхронность неких вызовов.

Событие OnDocumentComplete говорит тебе об успешной загрузке документа таким-то конкретным браузером.

Я не вижу трудностей в организации некоего менеджера, который в ответ на извещение неким браузером о факте загрузки им текущего док-та даст этому браузеру очередной URL из некоего списка.


 
guru-ru   (2006-03-31 17:20) [10]

буду думать. спасибо за помощь. а насчет вопроса о получении ответа (404,403,200) можно получить их из браузера? или какнить определить, доступна страница или нет.



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

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

Наверх




Память: 0.49 MB
Время: 0.037 c
9-1132873549
Юзерок
2005-11-25 02:05
2006.08.20
directX


6-1144164046
WebSqlNeederr
2006-04-04 19:20
2006.08.20
Как отловить, что часть документа загружена?


15-1153722652
Yuri Btr
2006-07-24 10:30
2006.08.20
Как создать компонент SysTreeView32+SysListView32


2-1154003774
BioWar2
2006-07-27 16:36
2006.08.20
Скопировать изображение


15-1151931171
Parus
2006-07-03 16:52
2006.08.20
Словарь