Fórum tem como apagar todas as linhas em granco de um memo #254154
13/10/2004
0
exemplo
teste
teste
teste
ele teria q ficar assim
teste
teste
teste
Flaviocont
Curtir tópico
+ 0Posts
13/10/2004
Fórum Vini
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;
Gostei + 0
13/10/2004
Paulo_amorim
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é+
Gostei + 0
13/10/2004
Motta
var i : integer;
begin
for i := (Memo1.Lines.Count - 1) downto 0 do
if Memo1.Lines[i] = ´´ then
Memo1.Lines.Delete(i);
end;
Gostei + 0
13/10/2004
Rômulo Barros
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.
Gostei + 0
13/10/2004
Fórum Vini
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;
Gostei + 0
13/10/2004
Rômulo Barros
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);
[color=blue:4e57cfd3c1][b:4e57cfd3c1]Perfeito, Vini. Entretanto, testei aqui e deu tudo certinho.... utilizando o For.[/b:4e57cfd3c1][/color:4e57cfd3c1]
Gostei + 0
13/10/2004
Fórum Vini
:?
Lembro uma vez que fiz assim e não deu certo... :oops:
Então retiro o que eu disse :P
E obrigado :wink:
Gostei + 0
13/10/2004
Rômulo Barros
:?
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:
Gostei + 0
13/10/2004
Paulo_amorim
:?
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é+
Gostei + 0
13/10/2004
Fórum Vini
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;
Gostei + 0
13/10/2004
Rômulo Barros
[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:
Gostei + 0
13/10/2004
Fórum Vini
Foi exatamente o que eu disse:
:wink:
Gostei + 0
13/10/2004
Rômulo Barros
Foi exatamente o que eu disse:
:wink:[/quote:4063d95472]
:wink: :wink: :wink: :wink: :wink: :wink:
Gostei + 0
13/10/2004
Fknyght
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;
Gostei + 0
13/10/2004
Paulo_amorim
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
Não tem que testar tudo denovo, o código com IF..ELSE garante que a linha não será incrementada
Até+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)