kasowanie pustych linii

0

Wstawiłem taki kod i myślałem że wykasuje mi wszystkie puste linie w komponencie Memo

for linie2 := 0 to PoleTxt.Lines.Count do
begin
if PoleTxt.Lines[linie2] = ' ' then PoleTxt.Lines.Delete(linie2);
end;

ale nie działa... gdzie tu błąd ???--Delphi 6
Pozdrawiam All

0

&gt for linie2 := 0 to PoleTxt.Lines.Count -1 do
&gt begin
&gt if PoleTxt.Lines[linie2] = ' ' then PoleTxt.Lines.Delete(linie2);
&gt end;

Mysle, ze po prostu zapomniales -1 dodac. i mozesz zrobic tez tak:

if Length(PoleTxt.Lines[line2]) = 0 then...
--Pozdrawiam!
Adam Boduch
www.4programmers.net

0

Niestety nic nie pomaga :-(
Tak jakby program nie widział niektórych linii
Niektóre puste linie kasuje a niektóre pozostawia chociaż wszystkie są takie same - nic w nich nie ma.
No trudno - jeszcze pomyśle...

Ale THX za pomoc !!!--Delphi 6
Pozdrawiam All

0

to co napisal Adam u mnie dziala, ale.......
jak w linii sa same spacje to ich nie usuwa i
moze u ciebie jest to samo, ze jak masz sam ENTER to linie usuwa a jak spacje to nie :)))))
ale zamotalem :)))))))))
zreszta sprawdz sam :)

..-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-..-
L_u_dzik
http://www.polchat.pl/chat/?room=_delphi_ - tam mnie mozna znalezc :)

0

Aż tak bardzo nie zamotałeś ;-)
Ale to nie problem w spacjach ( to sprawdziłem już wsześniej ).
Myśle że po prostu mam gdzieś zaręcony kod. Dużo w nim pętli i warunków,
pewnie tam coś siedzi - dędę musiał wszystko posprawdzać :-(--Delphi 6
Pozdrawiam All

0

Wiem. Już wiem o co chodzi !!!

Ta procedura nie działa prawidłowo w przypadku kiedy
chcemy usunąć kilka pustych linii po sobie.
np:

linie tekst

1 jakaś pierwsza linijka
2 &ltPusta linia&gt
3 &ltPusta linia&gt
4 &ltPusta linia&gt
5 &ltPusta linia&gt
6 jakaś druga linijka tekstu

Procedura usunie linie 2, a wtedy linia 3
zrobi się drugą i dalej będzie pusta.
A Pętla przejdzie do lini trzeciej.
Więc usuwana jest tylko co druga linia.

prawidłowa procedura może być np taka:

for linie2 := PoleTxt.Lines.Count downto 0 do
begin
if PoleTxt.Lines[linie2] = ' ' then PoleTxt.Lines.Delete(linie2);
end;--Delphi 6
Pozdrawiam All

0

Odpowedź może też być taka:

repeat
for i:=0 to Memo1.Lines.Count-1 do
Memo1.Lines[i]='' then
begin
Memo1.Lines.Delete(i);
Break;
end;
until i=Memo1.Lines.Count-1;

moze to jest dłuższe od tego co wy pisaliscie ale chyab dziala ;-})--Looknijcie na main Page - głópawa troche ale obleci ;-})

0

Uzywasz petli for, a nie jest to dobre ze wzgledu na to, ze po usuwaniu zmienia sie wartosc Count:
np. 1A, 2B, 3C, 4D dla i=2 usuwasz B i masz dla i=3: 1A, 2C, 3D, gdy C='' to pominiesz pusta linie.

Zalezy do czego chcesz to uzyc, bo np.

QRExprMemo.RemoveBlankLines := True;

Proponuje taki kod

i:=0;
while i&ltmemo.Count do begin
if IsBlank(memo.Lines[i]) then begin
memo.Lines.Delete(i)
dec(i);
end;
inc(i);
end;

IsBlank - funkcja spr, czy w lancuchu sa tylko biale znaki TAK=True

powodzenia
Astacus (D5 Pro)

0

#@%$ !!!

Czasami nie widze czesci postow

pozdr--Astacus (D5 Pro)

1 użytkowników online, w tym zalogowanych: 0, gości: 1