Например
| Код | 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 пишет в этот стрим прочитанные данные - заношу их в мемо. |