Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.24;
Скачать: CL | DM;

Вниз

Удаление пустой строки   Найти похожие ветки 

 
sloosar ©   (2009-11-25 23:11) [0]

Как удалить пустую строку с 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;

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


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

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


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


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


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

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


 
korneley ©   (2009-11-26 01:57) [3]

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


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


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

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


 
korneley ©   (2009-11-26 02:21) [5]


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

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


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

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

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

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


 
brother ©   (2009-11-26 05:48) [7]

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

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


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

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


 
sloosar ©   (2009-11-26 09:46) [9]

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

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

то получится

текст

текст

???


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


> ???


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

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


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


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

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


 
sloosar ©   (2009-11-26 10:19) [12]

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

а1
а2
а3
а4

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


 
brother ©   (2009-11-26 11:16) [13]

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

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


 
Anatoly Podgoretsky ©   (2009-11-26 11:23) [14]

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


 
~AQUARIUS~ ©   (2009-12-02 11:03) [15]

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;


 
RWolf ©   (2009-12-02 14:28) [16]


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



Страницы: 1 вся ветка

Текущий архив: 2010.01.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
2-1259631171
des
2009-12-01 04:32
2010.01.24
Как отследить и заблокировать?


2-1260025909
Б
2009-12-05 18:11
2010.01.24
Минимизация. Как узнать?


15-1258446035
_
2009-11-17 11:20
2010.01.24
Довлоадеры. Какой выбрать?


2-1259738939
n_sch
2009-12-02 10:28
2010.01.24
Вопрос по IntraWeb


2-1259688146
Vladimir1988
2009-12-01 20:22
2010.01.24
dll