Форум: "Начинающим";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];
ВнизУдаление пустой строки Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c