Fórum tem como apagar todas as linhas em granco de um memo #254154

13/10/2004

0

amigos to com um probleminha tem como apagar todas as linhas em granco de um memo

exemplo

teste

teste

teste

ele teria q ficar assim

teste
teste
teste


Flaviocont

Flaviocont

Responder

Posts

13/10/2004

Fórum Vini

Olá,
você pode usar esse código:
var
  cont: Integer;
begin
  while (cont <= Memo1.Lines.Count  - 1)  do
    if ( Trim(Memo1.Lines[cont]) = ´´ ) then
      Memo1.Lines.Delete(cont)
    else
      Inc(cont);

(Não testei pq estou sem Delphi aqui, mas se não funcionar pode me falar)

Espero ter ajudado,
Vinicius;


Responder

Gostei + 0

13/10/2004

Paulo_amorim

Olá

Pode-se fazer uma rotina que faça isso...

i := 0;
while not (i >= Memo1.Lines.Count) do
begin
  if Trim(Memo1.Lines[i]) = ´´ then // tira também as que contêm só espaço
    Memo1.Lines.Delete(i)
  else
     Inc(i);
end;


Espero que ajude
Até+


Responder

Gostei + 0

13/10/2004

Motta

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
for i := (Memo1.Lines.Count - 1) downto 0 do
if Memo1.Lines[i] = ´´ then
Memo1.Lines.Delete(i);
end;


Responder

Gostei + 0

13/10/2004

Rômulo Barros

Aew, Maluco... tu moras em Toritama, é? (hauahauahu) Minha noiva mora aew, bem pertinho (Suburim - hauahauahau)

procedure TForm1.Button1Click(Sender: TObject);
Var
  intC : Longint;
begin
  For intC := 0 To Memo1.Lines.Count -1 Do
  Begin
     If(Trim(Memo1.Lines.Strings[intC]) = ´´)Then
       Memo1.Lines.Delete(intC);
  End;
end;

end.



Responder

Gostei + 0

13/10/2004

Fórum Vini

Olá de novo,
Queria fazer uma correção no meu código, que inclusive tá quase idêntico ao do Paulo Amorim.. telepatia? :wink:
var
  cont: Integer;
begin
  cont:= 0; // Tinha esquecido disso, pra não pegar lixo
  while (cont <= Memo1.Lines.Count  - 1)  do
    if ( Trim(Memo1.Lines[cont]) = ´´ ) then
      Memo1.Lines.Delete(cont)
    else
      Inc(cont);

Obs.: Acredito que as rotinas que usam FOR não irão funcionar no seu caso, já que o Count da propriedade Lines é alterado quando você apaga uma linha..

T+,
Vinicius;


Responder

Gostei + 0

13/10/2004

Rômulo Barros

Olá de novo, Queria fazer uma correção no meu código, que inclusive tá quase idêntico ao do Paulo Amorim.. telepatia? :wink:
var
  cont: Integer;
begin
  cont:= 0; // Tinha esquecido disso, pra não pegar lixo
  while (cont <= Memo1.Lines.Count  - 1)  do
    if ( Trim(Memo1.Lines[cont]) = ´´ ) then
      Memo1.Lines.Delete(cont)
    else
      Inc(cont);
Obs.: Acredito que as rotinas que usam FOR não irão funcionar no seu caso, já que o Count da propriedade Lines é alterado quando você apaga uma linha.. T+, Vinicius;


[color=blue:4e57cfd3c1][b:4e57cfd3c1]Perfeito, Vini. Entretanto, testei aqui e deu tudo certinho.... utilizando o For.[/b:4e57cfd3c1][/color:4e57cfd3c1]


Responder

Gostei + 0

13/10/2004

Fórum Vini

[quote:795fefb2a8=´Undeclared Identifier´][color=blue:795fefb2a8][b:795fefb2a8]Perfeito, Vini. Entretanto, testei aqui e deu tudo certinho.... utilizando o For.[/b:795fefb2a8][/color:795fefb2a8][/quote:795fefb2a8]
:?
Lembro uma vez que fiz assim e não deu certo... :oops:
Então retiro o que eu disse :P
E obrigado :wink:


Responder

Gostei + 0

13/10/2004

Rômulo Barros

[quote:052ad40204=´Undeclared Identifier´][color=blue:052ad40204][b:052ad40204]Perfeito, Vini. Entretanto, testei aqui e deu tudo certinho.... utilizando o For.[/b:052ad40204][/color:052ad40204]

:?
Lembro uma vez que fiz assim e não deu certo... :oops:
Então retiro o que eu disse :P
E obrigado :wink:[/quote:052ad40204]

:wink: :wink: :wink: :wink:


Responder

Gostei + 0

13/10/2004

Paulo_amorim

[quote:d6e940650d=´Undeclared Identifier´][color=blue:d6e940650d][b:d6e940650d]Perfeito, Vini. Entretanto, testei aqui e deu tudo certinho.... utilizando o For.[/b:d6e940650d][/color:d6e940650d]

:?
Lembro uma vez que fiz assim e não deu certo... :oops:
Então retiro o que eu disse :P
E obrigado :wink:[/quote:d6e940650d]

Olá

Pow Vini o código ficou parecido mesmo né... alias, os 4 né :D

Pior que eu também pensei que com for não fosse funcionar pois ja tinha apanhado disso antes, cheguei a começar a digitar a resposta aqui, mas parei pra testar antes de postar e vi que funcionou também... Não me preocupei em debugar pra ver o que aocntece, mas tudo bem né

Até+


Responder

Gostei + 0

13/10/2004

Fórum Vini

Pior que eu também pensei que com for não fosse funcionar pois ja tinha apanhado disso antes

Haha! Achei o problema :D
O código que usa FOR funciona perfeitamente para um texto como esse:
teste

teste

teste

Mas não funciona para um texto como esse:
teste


teste



teste

Ele remove somente um dos espaços, o outro continua :P
Isso acontece porque o contador é incrementado mesmo quando a linha é retirada, assim, uma linha acaba sendo ´pulada´..
Então vai depender do problema do nosso colega, se sempre for uma linha só entre as outras, todos os códigos funcionam( inclusive os do FOR com até mais desempenho, porque ele vai sempre cair na linha certa, pulando as válidas ), agora se for mais de uma, somente os códigos meu e do Paulo irão funcionar.. :wink:

Falei de mais né? :lol:

T+,
Vinicius;


Responder

Gostei + 0

13/10/2004

Rômulo Barros

amigos to com um probleminha tem como apagar todas as linhas em granco de um memo exemplo teste teste teste ele teria q ficar assim teste teste teste


[b:b439b5e7d7]No exemplo acima, postado pelo nosso colega, ´acredito´ q seja entre ´uma linha´ os espaços em branco. Portanto, todas as soluções estão corretas. [/b:b439b5e7d7] :roll:


Responder

Gostei + 0

13/10/2004

Fórum Vini

[quote:af4fa0f870=´Undeclared Identifier´]No exemplo acima, postado pelo nosso colega, ´acredito´ q seja entre ´uma linha´ os espaços em branco. Portanto, todas as soluções estão corretas.[/quote:af4fa0f870]
Foi exatamente o que eu disse:
Então vai depender do problema do nosso colega, se sempre for uma linha só entre as outras, todos os códigos funcionam( [b:af4fa0f870]inclusive os do FOR com até mais desempenho[/b:af4fa0f870], porque ele vai sempre cair na linha certa, pulando as válidas )

:wink:


Responder

Gostei + 0

13/10/2004

Rômulo Barros

[quote:4063d95472=´Undeclared Identifier´]No exemplo acima, postado pelo nosso colega, ´acredito´ q seja entre ´uma linha´ os espaços em branco. Portanto, todas as soluções estão corretas.

Foi exatamente o que eu disse:
Então vai depender do problema do nosso colega, se sempre for uma linha só entre as outras, todos os códigos funcionam( [b:4063d95472]inclusive os do FOR com até mais desempenho[/b:4063d95472], porque ele vai sempre cair na linha certa, pulando as válidas )

:wink:[/quote:4063d95472]

:wink: :wink: :wink: :wink: :wink: :wink:


Responder

Gostei + 0

13/10/2004

Fknyght

Ai veio o codigo abaixo, vai funcionar direitinho.
Vou explicar
Quando voce exclui uma linha do Memo1, a memo1.lines.count diminui uma linha, dai voce tem que voltar ao inicio, ou seja, na linha 0 ( ZERO ) e testar tudo de novo

Espero ter ajudado

procedure TForm1.Button1Click(Sender: TObject);
Var
  Lin : Longint;
begin
  Lin := 0;
  While Lin <= Memo1.Lines.Count -1 do
  Begin
     If( Length( Trim(Memo1.Lines.Strings[ Lin ] ) ) = 0 )Then
       Begin
         Memo1.Lines.Delete( Lin );
         Lin := -1; // Volta a linha inicial, tem que ser -1 por causa do inc logo abaixo
       End;
     Inc( Lin );
  End;
end;



Responder

Gostei + 0

13/10/2004

Paulo_amorim

Ele remove somente um dos espaços, o outro continua :P Isso acontece porque o contador é incrementado mesmo quando a linha é retirada, assim, uma linha acaba sendo ´pulada´..


Olá

Quando tive essa dúvida se o for funcionava ou não eu peguei o código do Motta (que tinha for com downto) e testei até com 2, 3 espaços...ele pegou todos, e eu não entendi lá muito bem o motivo... não sei se com downto ele pega... com ´to´ eu não testei

Quando voce exclui uma linha do Memo1, a memo1.lines.count diminui uma linha, dai voce tem que voltar ao inicio, ou seja, na linha 0 ( ZERO ) e testar tudo de novo

Não tem que testar tudo denovo, o código com IF..ELSE garante que a linha não será incrementada

Até+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar