Показать сообщение отдельно
  #1  
Старый 26.02.2011, 14:36
@Vorona @Vorona вне форума
Прохожий
 
Регистрация: 25.02.2011
Сообщения: 4
Репутация: 10
Вопрос Многопотоковый "терминальный сборщик" веб-контента (IdTcpServer, TWebBrowser)

Доброго времени суток, господа! Появилась необходимость написать сетевое приложение для сбора веб-страниц. Постановка задачи следующая:
1)Приложение слушает на определённом порту.
2) На порт приходит клиент и говорит, допустим "HELLO"
3) По этой комманде должен создаваться объект TWebBrowser и при успехе в ответ приходит, допустим "READY" (какие либо ошибки пока не рассматриваю...)
4) Клиент посылает комманту "LOAD" с параметром, к примеру "http://ya.ru", на что этот объект должен соответственно среагировать
5) по коммандам HTML и DOCUMENT сервер должен отдать хтмл код и боди.иннер текст соответсвенно.
При дисконнекте объект TWebBrowser должен уничтожится.
Долго поломав голову, в качестве сервера выбрал IdTcpServer
для теста в событие камманды HELLO вписал следующее:


Код:
uses MSHTML, ActiveX;
...

procedure TForm1.IdTCPServer1HELO_COMMANDCommand(ASender: TIdCommand);
var
doc: IHTMLDocument2;
IE: TWebBrowser;
begin
memo1.Lines.Add('Client '+asender.Thread.Connection.Socket.Binding.PeerIP+':'+inttostr(asender.Thread.Connection.Socket.Binding.PeerPort)+' says: HELLO '+asender.UnparsedParams);
CoInitialize(nil);


  IE := TWebBrowser.Create(Form1);
  IE.Visible := true;
  IE.enabled := true;
  IE.Silent :=false;
  IE.Navigate('http://ya.ru');   
  memo1.Lines.Add('Waiting...');
  //while IE.Busy do sleep (200);}
  sleep (10000);
      doc := IE.Document as IHTMLDocument2;
      memo1.Lines.Add('DOM');
memo1.Lines.Add(doc.body.innerText); //Тут прога вылетает с екзепшном "Access violation at address 0046CCFB in module 'Proj.exe'. Read of address 00000000"
  //asender.Thread.Data := TObject(@IE);
end;
Причём, пробовал вручную создавать на форме данный компонент, делать с ним Navigate и пытаться выковырнуть оттуда иннертекст в один поток - прокатывало

Вопрос: что я не так делаю?
Ответить с цитированием