Indy - Telnet
15/08/2003
0
Presciso de um algoritmo para ler o buffer(Uma String) no evento DataAvailable no IdTelnet e adiciona-lo em um memo sobre a seguinte condição:
* Não deixar ele estrapolar o espaço total de cada linha do memo, quebrando o texto em outras linhas.
O motivo disso é que eu estou usando um componente para o Memo diferente que não tem a propriedade Word Wrap =/
Quem tiver outros algoritmos para ler Data do iTelnet, mas que nao faça isso, postem aqui, quem sabe ajuda :D
Vlw Pessoal.
* Não deixar ele estrapolar o espaço total de cada linha do memo, quebrando o texto em outras linhas.
O motivo disso é que eu estou usando um componente para o Memo diferente que não tem a propriedade Word Wrap =/
Quem tiver outros algoritmos para ler Data do iTelnet, mas que nao faça isso, postem aqui, quem sabe ajuda :D
Vlw Pessoal.
Drakkar
Curtir tópico
+ 0
Responder
Posts
16/08/2003
Drakkar
Consegui código aqui, mas ele naum faz a limitacao de X caracteres por linha, se alguem poder ajudar...
procedure TfrmTelnetDemo.IdTelnetDemoDataAvailable(Sender: TIdTelnet;
const Buffer: String);
const
CR = #13;
LF = 10;
var
Start, Stop : Integer;
begin
if Memo.Lines.Count = 0 then
Memo.Lines.Add(´´);
Start := 1;
Stop := Pos(CR, Buffer);
if Stop = 0 then
Stop := Length(Buffer) + 1;
while Start <= Length(Buffer) do begin
Memo.Lines.Strings[Memo.Lines.Count - 1]:=Memo.Lines.Strings[Memo.Lines.Count - 1]+Copy(Buffer, Start, Stop - Start);
if Buffer[Stop] = CR then begin
Memo.Lines.Add(´´);
{$IFNDEF Linux}
SendMessage(Memo.Handle, WM_KEYDOWN, VK_UP, 1);
{$ENDIF}
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;
procedure TfrmTelnetDemo.IdTelnetDemoDataAvailable(Sender: TIdTelnet;
const Buffer: String);
const
CR = #13;
LF = 10;
var
Start, Stop : Integer;
begin
if Memo.Lines.Count = 0 then
Memo.Lines.Add(´´);
Start := 1;
Stop := Pos(CR, Buffer);
if Stop = 0 then
Stop := Length(Buffer) + 1;
while Start <= Length(Buffer) do begin
Memo.Lines.Strings[Memo.Lines.Count - 1]:=Memo.Lines.Strings[Memo.Lines.Count - 1]+Copy(Buffer, Start, Stop - Start);
if Buffer[Stop] = CR then begin
Memo.Lines.Add(´´);
{$IFNDEF Linux}
SendMessage(Memo.Handle, WM_KEYDOWN, VK_UP, 1);
{$ENDIF}
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;
Responder
Clique aqui para fazer login e interagir na Comunidade :)