At 20:03 14/08/2008, Piotr Da?ek wrote: > >> procedure LoginSocketDocEnd(Sender: TObject); > >> var p: PChar; > >> s: string; > >> begin > >> p := TMemoryStream(LoginSocket.RcvdStream).Memory; > >> s:= Copy(StrPas(p), 1, LoginSocket.RcvdStream.Size); > >This will crash if source TMemoryStream doesn't end with #0. Moreover, >this copies data twice (wastes time and memory). > >Use this: > >SetLength(s, LoginSocket.RcvdStream.Size); >Move(TMemoryStream(LoginSocket.RcvdStream).Memory^, pointer(s)^, >LoginSocket.RcvdStream.Size);
Thanks guys. Here's some code I was given elsewhere: ====== function StreamToText(oStream : TStream): String; var oSL : TStringlist; begin oSL := TStringlist.Create; oSL.LoadFromStream(oStream); result := oSL.Text; oSL.Free; end; [...] With HttpCli1 do begin URL := 'www.acme.com'; RcvdStream := TMemoryStream.Create; try Get; except ShowMessage('Oops'); RcvdStream.Free; Exit; end; RcvdStream.Seek(0,0); PerlRegEx1.RegEx := '<title>(.+?)</title>'; PerlRegEx1.Options := [preCaseLess]; PerlRegEx1.Subject := StreamToText(RcvdStream); If PerlRegEx1.Match then begin ShowMessage('yes'); ====== Thanks. -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be