![]() |
Удаление пустых строк
У меня очень простой вопрос:
Как удалить пустые строки и строки состоящие только из пробелов из memo1? Я пробовал 2 варианта: 1. вариант (более эффективный) Код:
i:= 0; While i <> Memo1.Lines.Count - 1 do begin if Length(Memo1.Lines.Strings[i])=0 then begin Memo1.Lines.Delete(i); dec(i); end; inc(i); Next; end;Это АНТИВАРИАНТ. Проблема не решена! 2. вариант. (Ваще не эффективный) Код:
for i:=0 to memo1.lines.count-1 do if memo1.lines.strings[i]='' then memo1.lines.delete(i);Я долго немог найти ответ в Гугле. Но истина где то рядом... Я думаю должно быть простое и гениальное решение для этой НЕВЕРОЯТНО трудно задачи! :confused: |
Попробуй так:
PHP код:
|
используй trim(Memo1.Lines.Strings[i]) вместо Memo1.Lines.Strings[i] в условиях.
во втором варианте цикл неверный, количество меняется при удалении строки. верно будет for i:=memo1.lines.count-1 downto 0 do |
тему научись сначало правильно называть, затем хоть почитай доку по делфи, и тока потом называй это НЕВЕРОЯТНО трудной задачей.
тебе реально достаточно пробежаться по всем элементам и сравнить по двум условиям 1) пустая строка. просто проверяй <> ''; 2) проверя строку на пробелы. циклом прогоняй по всем символам и если символ не пробел, то строку оставляй в покое. тоже самое и на табуляторы проверяй. Хотя можеш и trim заюзать, но всё равно могут быть еще непечатные символы, которые трим может пропустить случайно |
Код:
|
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); |
Пустая строка в мемо это на самом деле #13#10, т.е. как бы не совсем пустая
|
Не работает
Цитата:
После первого нажатия на кнопку - почти ничо не удаляет. Нажимаю 2,3,4,5 раз - более менее что то удалило, но все же остаются строки из пробелов. Решение не найдено. |
Не работает
Цитата:
Остаются и пустые строки и строки из пробелов. :( |
Не работает
Цитата:
|
ВОПРОС ОСТАЛСЯ ОТКРЫТЫМ.
Цитата:
Цитата:
Тема названа так - потому что это действительно не простая задача, как оказалось - ни один из предложенных вариантов пользователями этого форума не сработал. Цитата:
Если знаеш учебник, который я пропустил - ткни пальцем. Буду очень благодарен. Цитата:
|
Может у тебя проблема в том, что в Memo1 находится не только пробелы и пустые строки или табуляторы а еще какая нить непечатная фигня? И ты по этому поводу мозги угукаешь людям.
Код:
var |
Код:
var |
HTML код в мемо находится.
Цитата:
Вот например: Код:
<DIV align="center"><P style="font-family: Вот отсюда нужно удалить лишние строки. Какие еще непечатные символы тут могут быть??? :confused: |
Кидай такой длинный текст в тег CODE
|
народ, вы не забывайте что проход должен быть с конца списка а не с начала, потому что строки сдвигаются и тогда будут пропуски.
|
Код:
var |
СРАБОТАЛО!!!
Цитата:
Спасибо большое! |
Цитата:
|
Цитата:
|
Dimon32, какбы сказать, это извращенческий метод юзать второй список.
Мой код тоже нормально всё обработал и вывел без пустых строк. |
Цитата:
|
ПОСЛЕДНЯЯ НЕНУЖНАЯ СТРОКА ТО ОСТАЕТСЯ(((
Цитата:
|
Цитата:
А код можно всегда оптимизировать. Хоть через 5 memo - ГЛАВНОЕ ЧТОБЫ РАБОТАЛ КАК НАДО!. |
Цитата:
ЗЫ я дал 2 примера с 1 списком и с двумя списками |
Убрать последнюю строку НЕВОЗМОЖНО
Цитата:
|
Собственно говоря чем она тебе мешает последняя строка.?
|
Цитата:
Можно образовать массив строк без последней. то что мне нужно |
| Время: 10:16 |