Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2010, 15:38   #1
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию Удалить пустые строки из Memo

Здравствуйте, извините за "тупой" вопрос, голова совсем не варит.
Как очистить Memo от пустых строк?
W0LF вне форума Ответить с цитированием
Старый 11.09.2010, 15:50   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

в цикле пройди(while):
Код:
if Memo.Lines[i]='' then begin
Memo.Lines.Delete(i);
dec(i);
end;
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 11.09.2010, 16:15   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

на моей памяти на форуме уже третий раз публикую один и тот же ответ...
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
  TS : TStringList;
begin
  TS := TStringList.Create;
  TS.Text := Memo1.Text;
  for i:=TS.Count-1 downto 0
    do if Length(trim(TS.Strings[i]))=0
       then TS.Delete(i);
  Memo1.Text := TS.Text;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.09.2010, 16:31   #4
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Подсказали мне другой способ, вот если кому пригодиться:
Код:
   Memo1.Text := StringReplace(Memo1.Text, #13#10#13#10, #13#10, [rfReplaceAll]);
W0LF вне форума Ответить с цитированием
Старый 11.09.2010, 16:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

кстати, есть отличия.
в моём случае строчка имеющая в своём составе пробелы - удалится, а при использовании StringReplace - останется.

Впрочем, главное, что Ваше решение Вас устраивает!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.06.2025, 06:24   #6
Gin 1
 
Регистрация: 10.10.2014
Сообщений: 5
По умолчанию

Serge_Bliznykov, пустые строки в тексте TStringList удаляются, но последняя (та что добавляет сам TStringList) строка пустой всё-равно остаётся. Соответственно, счётчик показывает неправильный результат, так как считает и пустую строку.
Gin 1 вне форума Ответить с цитированием
Старый 20.06.2025, 12:17   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,849
По умолчанию

Не знаю о чем вы говорите. У меня все удаляется (проверяю в Лазарусе):
Код:
procedure RemoveEmptyLines(Memo: TMemo);
var i : integer;
  TS : TStringList;
begin
  TS := TStringList.Create;
  TS.Text := Memo.Text;
  for i:=TS.Count-1 downto 0
    do if Length(trim(TS.Strings[i]))=0
       then TS.Delete(i);
  Memo.Text := TS.Text;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Add('    ');
  Memo1.Lines.Add('');
  Memo1.Lines.Add('qwerty');
  Memo1.Lines.Add('');
  Memo1.Lines.Add('asdfgh');
  Memo1.Lines.Add('');
  ShowMessage(IntToStr(Memo1.Lines.Count));
  RemoveEmptyLines(Memo1);
  ShowMessage(IntToStr(Memo1.Lines.Count));
end;
Выводит: 6, 2.

P.S. Если речь о том, что в конце последней строки все равно стоят символы перевода строки и от них нужно избавиться, то измените последнюю строку функции на:
Код:
  Memo.Text := TrimRight(TS.Text);

Последний раз редактировалось Arigato; 20.06.2025 в 12:23.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить пустые строки из TStringList apromix Общие вопросы Delphi 5 14.09.2016 12:14
удалить пустые строки в txt файле andreton Помощь студентам 3 05.06.2010 21:35
Удалить пустые строки перед добавлением Shouldercannon Общие вопросы Delphi 2 28.05.2010 19:49
Удалить лишние пустые строки vfv Microsoft Office Excel 2 09.03.2010 11:05
Как удалить пустые строки с условиями? ru3000 Microsoft Office Excel 9 30.06.2009 00:13