Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Обращение к серверу


Автор: lifer 17.1.2004, 21:11
Значит так:
Мне надо выполнить запрос к серверу (http://www.somewhere.ru/script.php?name=vasya&pass=pupkin)

Если я делаю это через shellexecute - загружается ХТМЛ страница.
Код
ShellExecute(Handle, 'open', 'http://www.somewhere.ru/script.php?name=vasya&pass=pupkin',nil,nil, SW_SHOWNORMAL);

Вопрос: Как моей программе обработать полученную страницу (взять из неё определённую строку) ?

ЗЫ. Не ругайте, если какую-то пургу написал. Просто это всё, что на данный момент у меня в голове по этому вопросу smile.gif

Автор: PROme 17.1.2004, 21:43
Lifer, ну ты даешь!
Делается легко - открываешь контакт лист Аси, находишь ***_PRO
И нагружаешь его этой байдой! Так чтоб жизнь малиной не казалась wink.gif biggrin.gif

Автор: lifer 17.1.2004, 21:56
Хватит прикалываться.

Автор: Kesh 17.1.2004, 21:56
По-моему для тебя проще будет создать на форме компонент TWebBrowser
user posted image
А потом
Код
WebBrowser1.Navigate(http://www.somewhere.ru/script.php?name=vasya&pass=pupkin)

А потом в нем уже искать чего нужно...

Автор: Pakshin A. S. 17.1.2004, 22:03
А, по-моему, WebBrowser не даст просмотеть HTML код отображенной страницы, или я ошибаюсь?

Автор: Kesh 17.1.2004, 22:16
Так просто не даст, но там есть Document: IDispatch...

Автор: lifer 17.1.2004, 22:35
А где именно искать Document: IDispatch ?

Автор: Kesh 17.1.2004, 22:38
lifer Ты знаешь, наверное мой совет тебе не подойдет... Мне кажется пока это еще слишком сложно для тебя...
Ладно, подумаю, что можно сделать...

Автор: lifer 17.1.2004, 22:45
нашёл в Хелпе по Делфи Document: IDispatch. Там сказанно что он делает, а как именно его юзать - нет.

Автор: lifer 17.1.2004, 22:46
Мне надо только достать эту строку... дальше я знаю как делать...

Автор: Kesh 17.1.2004, 22:46
Блин, да у нас это в FAQ'e есть...
Цитата
В IE5, можно получить исходник используя свойство outerHTML тэгов
HTML. В IE4 или IE3, Вам понадобится записать документ в файл, а затем
загрузить файл в TMemo, TStrings, и т.д.
Код

var
 HTMLDocument: IHTMLDocument2;
 PersistFile: IPersistFile;
begin
...
 HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
 PersistFile := HTMLDocument as IPersistFile;
 PersistFile.Save(StringToOleStr('test.htm'), True);  
 while HTMLDocument.readyState < > 'complete' do
   Application.ProcessMessages;
...
end;


Автор: Ron Loewy Обратите внимание: Вам понадобится импортировать библиотеку
MSHTML и добавить MSHTML_TLB как ActiveX, в секцию Uses.

Автор: Kesh 17.1.2004, 22:48
Только по-моему надо так...
Код
begin
...
 HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
 PersistFile := HTMLDocument as IPersistFile;
 while HTMLDocument.readyState < > 'complete' do
   Application.ProcessMessages;
 PersistFile.Save(StringToOleStr('test.htm'), True);  
...
end;

Автор: Kesh 17.1.2004, 22:51
А вот еще...
Цитата
Найти и выделить текст в TWebBrowser?
Код

{....}  

 private  
   procedure SearchAndHighlightText(aText: string);  
     
{....}  

procedure TForm1.SearchAndHighlightText(aText: string);  
var  
 i: Integer;  
begin  
 for i := 0 to WebBrowser1.OleObject.Document.All.Length - 1 do  
 begin  
   if Pos(aText, WebBrowser1.OleObject.Document.All.Item(i).InnerText) <> 0 then  
   begin  
     WebBrowser1.OleObject.Document.All.Item(i).Style.Color := '#FFFF00';  
     WebBrowser1.OleObject.Document.All.Item(i).ScrollIntoView(True);  
   end;  
 end;  
end;  

procedure TForm1.Button1Click(Sender: TObject);  
begin  
 SearchAndHighlightText('some text...');  
end;
 

Автор: lifer 17.1.2004, 23:06
Цитата
Автор: Ron Loewy Обратите внимание: Вам понадобится импортировать библиотеку
MSHTML и добавить MSHTML_TLB как ActiveX, в секцию Uses.

Ну добавил я эту библиотеку а мне пишет PersistFile: IPersistFile --- Undeclared Identifier 'IPersistFile'

Млин, только не ругайтесь сильно, я с этой темой первый раз столкнулся smile.gif

Автор: Kesh 17.1.2004, 23:09
Да я по хорошему... тоже...

У тебя IE какой?..

Автор: lifer 18.1.2004, 02:48
у меня IE 5.0.

Автор: lifer 18.1.2004, 12:31
В общем, мне нужно из TWebbrowser достать исходный текст на ХТМЛ, чтобы дальше его мучать. Пример приведенный выше у меня не заработал sad.gif

Автор: Kesh 18.1.2004, 14:56
Добавь ActiveX в Uses

Автор: lifer 18.1.2004, 16:02
OK.
Ещё вопрос:
Я пишу: TWebBrowser.Navgate('http://somewhere.ru/script.php?name=vasya&pass=pupkin');
А он мне выдаёт что такой страницы нет, хотя она точно есть. Я думаю что он не понимает Амперсанд (&) нормально. Как его правильно записать?

Автор: lifer 18.1.2004, 16:13
Извините, меня глючило. Уже всё ОК. smile.gif

Автор: lifer 18.1.2004, 23:44
Я сделал так, как в том примере было. Т.е. я загружаю содержимое страницы в файл, а потом из него читаю. Но помоему, я делаю лишнюю работу. Можно ли обойтись без записи в файл?

Автор: Kesh 19.1.2004, 02:19
Цитата(kesh @ 17.1.2004, 19:51)
А вот еще...
Цитата
Найти и выделить текст в TWebBrowser?
Код

{....}  

 private  
   procedure SearchAndHighlightText(aText: string);  
     
{....}  

procedure TForm1.SearchAndHighlightText(aText: string);  
var  
 i: Integer;  
begin  
 for i := 0 to WebBrowser1.OleObject.Document.All.Length - 1 do  
 begin  
   if Pos(aText, WebBrowser1.OleObject.Document.All.Item(i).InnerText) <> 0 then  
   begin  
     WebBrowser1.OleObject.Document.All.Item(i).Style.Color := '#FFFF00';  
     WebBrowser1.OleObject.Document.All.Item(i).ScrollIntoView(True);  
   end;  
 end;  
end;  

procedure TForm1.Button1Click(Sender: TObject);  
begin  
 SearchAndHighlightText('some text...');  
end;
 

Читай внимательнее...

Автор: lifer 19.1.2004, 15:55
Код

procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
var
i:integer;
begin
for i := 0 to WebBrowser1.OleObject.Document.All.Length - 1 do
begin
  if Pos('pass=', WebBrowser1.OleObject.Document.All.Item(i).InnerText) <> 0 then
  begin
    memo2.text:=memo2.text+WebBrowser1.OleObject.Document.All.Item(i).InnerText;
    end;
end;
end;


Так мне надо исходный ХТМЛ код, а эта процедура мне сохраняет только видимый текст.

Автор: lifer 20.1.2004, 20:58
ап

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)