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


Автор: dreamcation 9.6.2010, 22:37
Как загружая страницу используя IdHTTP1.Get отображать уже загруженные данные в Memo не дожидаясь окончания загрузки страницы полностью?

Автор: Matematik 10.6.2010, 02:34
Например
Код

type
  TMemoMemoryStream = class(TMemoryStream)
  private
    FMemo: TMemo;
  public
    constructor Create(AMemo: TMemo);
    function Write(const Buffer; Count: Longint): Longint; override;
  end;

{ TMemoMemoryStream }

constructor TMemoMemoryStream.Create(AMemo: TMemo);
begin
  inherited Create;
  FMemo := AMemo;
end;

function TMemoMemoryStream.Write(const Buffer; Count: Integer): Longint;
var tmp: AnsiString;
begin
  Result := inherited Write(Buffer, Count);

  SetString(tmp, PAnsiChar(@Buffer), Count);
  FMemo.Lines.Add(tmp);
  Application.ProcessMessages;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  HttpObj: TIdHTTP;
  Mem: TMemoMemoryStream;
begin
  Mem := TMemoMemoryStream.Create(mmo1);
  HttpObj := TIdHTTP.Create(nil);
  try
    HttpObj.RecvBufferSize := 256;
    HttpObj.Get('http://www.yandex.ru', Mem);
  finally
    HttpObj.Free;
    Mem.Free;
  end;
end;


Перекрываю метод Write у стрима, когда IdHTTP пишет в этот стрим прочитанные данные - заношу их в мемо.

Автор: dreamcation 10.6.2010, 12:11
Matematik, огромное спасибо, все работает именно так как надо)
К сожалению из за того что я недавно не этом форуме не могу поставить вам плюс.

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