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

Reply via email to