![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Всем доброе время суток!
Меня посетила идея создания одной программы, но столкнулся с трудностями реализации, нуждаюсь в помощь знатоков Допустим существует интернет страничка, на ней есть какое-то число. Как можно прочитать это число, и можно ли это сделать не загружая страницу целиком? Заранее спасибо всем откликнувшимся ![]() |
|
#2
|
||||
|
||||
|
тебе поможет indyclient -> idhttp.get , но он будет грузить всю страницу
|
|
#3
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
StrUtils,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
ScktComp, StdCtrls;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
savetickcount: Cardinal;
begin
// будем использовать блокируемый сокет
ClientSocket1.ClientType:=ctBlocking;
ClientSocket1.Host:='ya.ru';
ClientSocket1.Port:=80;
ClientSocket1.Open;
ClientSocket1.Socket.SendText('GET / HTTP/1.1'#13#10'Host: ya.ru'#13#10'User-Agent: Mozilla/4.0'#13#10#13#10);
savetickcount:=GetTickCount;
// ждем не более 1 минуты, т.е. 60000 мс
while (GetTickCount-savetickcount<60000) do
begin
// ReceiveLength не блокируемый метод
if ClientSocket1.Socket.ReceiveLength>0 then
begin
Memo1.Text:=Memo1.Text+ClientSocket1.Socket.ReceiveText;
// как только встретили конец страницы "</html>" то выходим
if AnsiEndsStr('</html>', Memo1.Text) then Break;
end;
end;
ClientSocket1.Close;
end;
end.
Код:
// как только встретили конец страницы "</html>" то выходим
if AnsiEndsStr('</html>', Memo1.Text) then Break;Последний раз редактировалось NumLock, 04.05.2012 в 10:45. |