Thanks Francois!

I changed the code to the following and it worked fine:

> var
>    Start, Stop : Integer;
>    Buffer : AnsiString;         <======
> begin
>  Buffer := PAnsiChar(Buf);  <======

Message: 2
Date: Sun, 24 Jan 2010 20:36:42 +0100
From: "Francois PIETTE" <francois.pie...@skynet.be>
Subject: Re: [twsocket] TnEmulVT Data Available Routine in Delphi 2010
       problems
To: "ICS support mailing" <twsocket@elists.org>
Message-ID: <92c28c09bc0a4bcc88a277f080d12...@ovb.local>
Content-Type: text/plain; format=flowed; charset="iso-8859-1";
       reply-type=original

Hi !

Altough I haven't looked in details at your code, at first glance you are
using String and Char instead of AnsiString and AnsiChar.

--
francois.pie...@overbyte.be
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be


----- Original Message -----
From: "Wayne Belshaw" <wayne.bels...@gmail.com>
To: <twsocket@elists.org>
Sent: Sunday, January 24, 2010 7:43 PM
Subject: [twsocket] TnEmulVT Data Available Routine in Delphi 2010 problems


> Hello,
>
> I had a working TnEmulVT/TNScript code module in Delphi 7 using the
> recommended "data available" event capture routine.  In then upgraded to
> Delphi 2010 including the latest ICS package.
>
> In the Delphi 2010 version of the build, I see "garbage" mixed in with my
> TMemo screen which at first glance appears to be some type of issue with
> UniCode conversion.   I'm at a bit of a loss as to the conversion function
> to be used in order to recover my data as I can do successfully with
> Delphi
> 7.
>
> Can anyone assist?   Here is the "Data Available" event handler that I'm
> using that has been previously posted:
>
> procedure TForm1.TnScript1DataAvailable(Sender: TObject; Buf: Pointer;
>  var Len: Integer);
> const
>    CR = #13;
>    LF = #10;
> var
>    Start, Stop : Integer;
>    Buffer : String;
> begin
>  Buffer := PChar(Buf);
> begin
>  if Memo1.Lines.Count = 0 then
>      Memo1.Lines.Add('');
>  Start := 1;
>  Stop  := Pos(CR, Buffer);
>  if Stop = 0 then
>      Stop := Length(Buffer) + 1;
>  while Start <= Length(Buffer) do begin
>      Memo1.Lines.Strings[Memo1.Lines.Count - 1] :=
>          Memo1.Lines.Strings[Memo1.Lines.Count - 1] +
>          Copy (Buffer, Start, Stop - Start);
>      if Buffer[Stop] = CR then begin
>          Memo1.Lines.Add('');
>      end;
>      Start := Stop + 1;
>      if Start > Length(Buffer) then
>          Break;
>      if Buffer[Start] = LF then
>         Start := Start + 1;
>      Stop := Start;
>      while (Buffer[Stop] <> CR) and (Stop <= Length(Buffer)) do
>          Stop := Stop + 1;
>  end;
> end;
> --
--
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