![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток, господа! Появилась необходимость написать сетевое приложение для сбора веб-страниц. Постановка задачи следующая:
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; Вопрос: что я не так делаю? ![]() Последний раз редактировалось @Vorona, 26.02.2011 в 14:58. |