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