Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление пустой строки [D7]


sloosar ©   (2009-11-25 23:11:00) 

Как удалить пустую строку с TStringList???
f : TSTringList;
procedure DeleteEnt;
var i : integer;
begin
 for i:=0 to f.Count-1 do
 if f.Strings[i]='' then f.Delete(i);
end;

Пробовал так, не получается :-(


RWolf   (2009-12-02 14:28:00) [1]


> ~AQUARIUS~
циклом for по убыванию индекса шустрее будет.


~AQUARIUS~   (2009-12-02 11:03:00) [2]

f : TSTringList;
procedure DeleteEnt;
var i : integer;
begin
 i := 0;
 while i < f.Count do
   if trim(f.[i]) = '') then f.Delete(i) else inc(i);
end;


Anatoly Podgoretsky   (2009-11-26 11:23:00) [3]

Тут не писатель нужен, а читатель.


brother   (2009-11-26 11:16:00) [4]

> Просто у меня есть файл в котором например записано:

ууу, как все запущено...


sloosar   (2009-11-26 10:19:00) [5]

Просто у меня есть файл в котором например записано:
"

а1
а2
а3
а4

"
мне нужно что бы было так
"
а1
а2
а3
а4
"
(без пустых строк)


RWolf   (2009-11-26 09:56:00) [6]


> for i:=0 to f.Count-1 do
>  if f.Strings[i]='' then f.Delete(i);

во-первых, просто f[i]
во-вторых, границы цикла for в дельфи вычисляются довыполнения итераций цикла, поэтому этот код будет постоянно выкидывать эксепшены.


Сергей М.   (2009-11-26 09:54:00) [7]


> ???


Не получится.

Deletr не "очищает" строку, а удаляетее из списка с соотв.коррекцией кол-ва его элементов и индексов эл-тов, следующих после удаляемым.


sloosar   (2009-11-26 09:46:00) [8]

Я так понял если применить Delete(1) к строкам :

текст
текст
текст

то получится

текст

текст

???


Юрий Зотов   (2009-11-26 06:04:00) [9]

for i := f.Count - 1 downto 0 do
 if Trim(f.Strings[i]) = '' then f.Delete(i);


brother   (2009-11-26 05:48:00) [10]

> if f.Strings[i]='' then f.Delete(i);

может так:
if Length(f.Strings[i]) <= 3 then f.Delete(i);// те если в строке меньше или 3 символа - она пустая (кол-во можно варьировать)


brother   (2009-11-26 05:45:00) [11]

согласен с [3] п.7
что видно в отладчике на

> if f. Strings[i]='' then f.Delete(i);

при "пустой" строке


korneley   (2009-11-26 02:21:00) [12]


> Германн ©   (26.11.09 02:10) [4]
> А может не стОит
> ? :)

А вот такой я оптимист :) Верю в обучаемость людей:))) Поэтому - СтОит! Я же не рыбу предлагаю, а сети...


Германн   (2009-11-26 02:10:00) [13]


> korneley ©   (26.11.09 01:57) [3]
>
>

А может не стОит ? :)


korneley   (2009-11-26 01:57:00) [14]

Попробую издалека:
1) Не каждый символ чем-то гадит на экране, и, как следствие, строка не пустая, но ничего не видно.
2) Не каждый пробел - #32. #160 тоже бывает... и т.д.
3) Есть "Перевод строки" и "Возврат каретки" это 2 (два) символа.
4) Пункт "3" не для всех редакторов/ОС. Иногда только #10, а иногда и только #13
5) Что в стринглист напихано никому не понятно.
6) см. [1] + downto + F1
7) И, в конце концов, что такое "пустая строка?"


Плохиш   (2009-11-25 23:34:00) [15]


> Как удалить пустую строку с TStringList???
>


> Пробовал так, не получается :-(

Что, не удаляется?


Игорь Шевченко   (2009-11-25 23:19:00) [16]

Строки в StringListе удаляют с конца


Наверх

Титульная страница Поиск, карта сайта Написать письмо