![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление пустой строки [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е удаляют с конца