Problema ao inserir linha em RichEdit

Delphi

05/05/2004

Olá, estou tendo um erro ao inserir uma linha no RichEdit, eis meu codigo:
function Quebra(Texto: string): string;
var
 i: Integer;
 Teste: string;
const
 Fim = ´<EOF>´;
begin
 i := 1;
 while i <= Length(Texto) do
 begin
  if Texto[i] = ´<´ then
  begin
   Teste := Copy(Texto, i, 5);
   if TeSTE = ´<EOF>´ then
   begin
    result := result + Chr(13);
    i := i + 5;
   end;
  end;
  result := result + Texto[i];
  i := i + 1;
 end;
end;

............

var
s: string;
begin
s := ´linha1<EOF>linha2´;
RichEdit1.Lines.Add(Quebra(s));





Onde está o erro?

Desde já agradeço,


Titanius

Titanius

Curtidas 0

Respostas

Maxwell_monteiro

Maxwell_monteiro

05/05/2004

Bem o tipo string em Object Pascal é um vetor de caracteres que na primeira posição guarda o numeros de bytes do vetor e na ultima posição tem um finalizador que é o 13. ou seja a sua suposta string ´linha1<EOF>linha2´´ é invalida já que ela tem um 13 bem no meio dela! logo deve ser por isso que o metodo Add deve estar falhando! tente usar o Add apos cada EOF


GOSTEI 0
Nildo

Nildo

05/05/2004

Maxell, quando você adiciona uma String quebrada em um RichEdit, ele separa corretamente.

Titanius, sua função está correta (pode ser melhorada) mas o resultado foi 100¬ positivo. Copiei e Colei o resultado que saiu no meu RichEdit utilizando a sua função e seu próprio exemplo:

linha1
linha2


Concluindo, sua função está correta. Que erro dá quando você tenta adicionar a linha?


GOSTEI 0
Titanius

Titanius

05/05/2004

Isto nildo.... da erro no richedit na hora de inserir a string
[]s


GOSTEI 0
Titanius

Titanius

05/05/2004

Isto nildo.... da erro no richedit na hora de inserir a string []s


O erro que da eh este: ´ RichEdit line insertion Error ´


GOSTEI 0
Nildo

Nildo

05/05/2004

Provavelmente você está tentando inserir uma linha Muito grande ou então uma quatidade enorme de linhas. Tenta debuggar o programa para ver porque ocorre isto


GOSTEI 0
Titanius

Titanius

05/05/2004

Nildo, estou tentando passar a seguinte string: linha1<EOF>linha2, somente isso...


GOSTEI 0
Nildo

Nildo

05/05/2004

Sem computador está com memória suficiente? Se sim, compila ele e envia o .EXE no meu email pra mim testar


GOSTEI 0
Titanius

Titanius

05/05/2004

nildo, consegui resolver da maneira nao muito ´bonita´

s := Richedit1.Text + Quebra(d);
Richedit1.Text := s;


Funcionou.. o problema agora e que quando tem mais linhas do que aparecem a barra de rolagem nao rola pra ultima.. sabes como arrumo isto?

[]s


GOSTEI 0
Nildo

Nildo

05/05/2004

Depois que você atribuir o .TEXT para ele, coloque o seguinte comando:

RichEdit1.Perform( EM_ScrollCaret, 0, RichEdit1.Lines.Count );


GOSTEI 0
Titanius

Titanius

05/05/2004

beleza nildo... valeu...


GOSTEI 0
POSTAR