

Lazarus -StringList
Zdar.
Mam text soubor, který načtu do StringListu.
Potřebují ho projit po řadcich a odstranít všechny řadky, ktere obsahují určite slovo. Třeba ahoj.
Toto funguje
for i := 0 to TS.Count-1 do
begin
s:= TS.Strings[i];
IF pos('ahoj',s) <> 0 then showmessage('je to tam');
end;
Toto už ne.
for i := 0 to TS.Count-1 do
begin
s:= TS.Strings[i];
IF pos('Připojeno',s) <> 0 then TS.Delete(i);
end;
Vyhodi to chybu List index (268) out of bounds.
Asi tušim čim to je, pokažde, když smažu řadek, tak se sniži TS.Count
Jak na to?
Děkují.
Musíš si uvědomit, že když vymažeš položku ze StringListu, změní jednak StringList.Count a též hodnoty všech indexů, co následují po vymazané položce. Tudíž procházet od konce je jediné možné řešení, páč tě pak už nezajímá změněný počet položek ani indexy co se mění za zmizelým prvkem.
Nepochopim, jak nekdo misto 2 radkoveho reseni - cyklus od konce dokaze travit cas vymyslenim stranky nefunkcniho kodu.
Když to potřebují i třidit a vypisovat do vice memo, tak nic jineho nezbyva.
Nerozumim. Ty to soucasne mazes, tridis a posilas nekam?
Pak to nemusis mazat. Staci, kdyz to cele projdes a posles ven jen to protridene.
A na druhou stranu je uplne jedno, jestli to projdes for cyklem nebo nejakym tebou rizenym while cyklem. I v tom gpr cyklu to muzes filtrovat a posilat do kolika memo chces.