62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381

Удалить пустые строки в ListBox и собрать строки вместе

22.01.2019, 02:10. Показов 3856. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим в ListBox есть строки с пропуском:

1 asdf
2 qwerty
3
4 zxcvbb
5
6 uyuuty


Нужна такая функция, что-бы в итоге получилось так:

1 asdf
2 qwerty
4 zxcvbb
6 uyuuty
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2019, 02:10
Ответы с готовыми решениями:

Строки. Удалить часть символьной строки,заключенной в скобки (вместе со скобками)
Удалить часть символьной строки,заключенной в скобки(вместе со скобками).

Удаляем пустые строки из listBox
Помогите пожалуйста как удалить пустые строки из listBox? пробовал string h = listBox1.Items.Count.ToString(); for (int i = 0; i<=...

Пустые строки в ListBox (Drag&Drop)
Написала программку с тремя компонентами: ListBox, Label, StringGrid. Взаимодействуют посредством Drag & Drop. ListBox и StringGrid -...

14
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
22.01.2019, 02:40
Цитата Сообщение от 920403 Посмотреть сообщение
Допустим в ListBox есть строки с пропуском:
Для этого "допустим" я могу дать вам код. Но я (и н только я) очень не люблю давать какой-то код для "допустим".
У вас есть реальная задача, которую вам надо решить? Так представьте нам её полную формулировку.
0
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
22.01.2019, 02:55  [ТС]
northener, Благодарю вас за внимание к теме! Я уже нашёл решение только что.

Delphi
1
2
for i := ListBox1.Items.Count - 1 downto 0 do
  if ListBox1.Items[i] = '' then ListBox1.Items.Delete(i);
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
22.01.2019, 02:59
Цитата Сообщение от 920403 Посмотреть сообщение
northener, Благодарю вас за внимание к теме! Я уже нашёл решение только что.
Не за что.
0
 Аватар для Flip
335 / 173 / 67
Регистрация: 25.02.2018
Сообщений: 616
22.01.2019, 03:04
Лучший ответ Сообщение было отмечено 920403 как решение

Решение

Можно удалить пустые строки и через Stringlist

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
var
  SL : TStringList;
  I  : integer;
begin
  SL := TStringList.Create;
  SL.Sorted := true;
 
  SL.AddStrings(ListBox1.Items);
 
  I := 0;
  while I < SL.Count do
    if SL[I] = '' then
      SL.Delete(I)
    else inc(I);
  ListBox1.Clear;
  ListBox1.Items.AddStrings(SL);
  SL.Destroy;
end;
1
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
22.01.2019, 03:17  [ТС]
Ашотик2018, Спасибо за вариант решения!

Добавлено через 10 минут
Что у нас общего? Это ночной образ жизни
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,424
Записей в блоге: 3
22.01.2019, 05:45
Ашотик2018, как по мне - то это уже избыточно... Хотя - задачи разные бывают...
и еще маленькое уточнение: строка в ListBox может быть визуально пустой, например, состоять из одних пробелов. Но действительно пустой она от этого не становится (пробел - такой же полноправный символ, как и буквенно-числовые) и Ваша проверка (и проверка 920403) просто не сработает...
А вот так - как с добрым утром:
Delphi
1
if Length(Trim(ListBox1.Items[i])) = 0 then ...
0
 Аватар для AHBAR
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,141
22.01.2019, 06:12
Ашотик2018, Вашенский код с корректировкой от D1973 будет полезен в том случае, если заранее известно, что количество строк в ListBox будет очень большим числом. В таком случае операция удаления построчно будет происходит невизуально без ненужной "прорисовки" на экране. Если число этих строк - небольшое, то код избыточен.
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
22.01.2019, 06:59
Цитата Сообщение от AHBAR Посмотреть сообщение
Ашотик2018, Вашенский код с корректировкой от D1973 будет полезен в том случае, если заранее известно, что количество строк в ListBox будет очень большим числом. В таком случае операция удаления построчно будет происходит невизуально без ненужной "прорисовки" на экране. Если число этих строк - небольшое, то код избыточен.
Могу ошибаться, но проблема с прорисовкой после каждого удаления решается с помощью
Delphi
1
2
3
ListBox.Items.BeginUpdate;
... //проводим операции удаления/вставки/редактирования
ListBox.Items.EndUpdate;
0
 Аватар для AHBAR
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,141
22.01.2019, 08:57
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Могу ошибаться, но проблема с прорисовкой после каждого удаления решается с помощью
не пробовал так.. но можно в принципе и Visible убирать
0
 Аватар для Flip
335 / 173 / 67
Регистрация: 25.02.2018
Сообщений: 616
22.01.2019, 09:06
Цитата Сообщение от D1973 Посмотреть сообщение
(пробел - такой же полноправный символ, как и буквенно-числовые) и Ваша проверка (и проверка 920403) просто не сработает...
Я в курсе, поэтому проверил сначала... все убирает, в одном из items специально сделал кучу пробелов. И при сортировке TStringList их убирает.
Название: SL.png
Просмотров: 111

Размер: 5.1 Кб
Цитата Сообщение от D1973 Посмотреть сообщение
как по мне - то это уже избыточно... Хотя - задачи разные бывают...
Согласен полностью. Это всего лишь один из вариантов как можно сделать...Я в душе не знаю сколько там будет items в этом ListBox. И если их там будет ого-го сколько, то TStringList самый оптимальный вариант.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,424
Записей в блоге: 3
22.01.2019, 10:25
Цитата Сообщение от Ашотик2018 Посмотреть сообщение
И при сортировке TStringList их убирает
Не воспроизводится у меня такое поведение...
Вот то, что было: первые 2 "пустые" строки заполнены пробелами, 3-я пустая строка - реально пустая...



А вот что получается при использовании Вашего кода... Более того, я сомневаюсь, что ТС-у необходимо менять порядок следования строк...

0
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
22.01.2019, 13:05  [ТС]
D1973, Да, конечно, вы правы в том, что со знаками пробелов этот код не работает, но скорее это исключительная ситуация, что-бы создать её, нужно ещё постараться специально ручками создать эти пробелы в файле, с которого затем будем считывать в ListBox. Или же мы специально запишем эти пробелы. В обычных операциях удаления или добавления строк в файлы, знаки пробелов не могут образоваться, там лишь пустая строка образуется. Но раз уж заговорили об такой ситуации, что мешает создать ещё одно условие, хотя я не пробовал так делать, но возможно создать цикл, где будем пересчитывать именно пробелы от 1 до 100 например, и затем привяжем через переменную к условию. Просто интересно, попробуем сделать так.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,424
Записей в блоге: 3
23.01.2019, 04:15

Не по теме:

Цитата Сообщение от 920403 Посмотреть сообщение
но возможно создать цикл, где будем пересчитывать именно пробелы от 1 до 100 например, и затем привяжем через переменную к условию
Да уж, мы не ищем легких путей... Городить такой огород, вместо того, чтобы одну функцию Trim() использовать...


Цитата Сообщение от 920403 Посмотреть сообщение
это исключительная ситуация, что-бы создать её, нужно ещё постараться...
Не факт! Когда я сам себе и для себя же готовлю файл - я уверен в результате и могу позволить некоторые вольности в коде. Если файл готовит кто-то там - результат может быть любым и программа должна быть к этому готова...
0
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
23.01.2019, 11:35  [ТС]
D1973, Я согласен с вами, просто бывает лень очень долго возиться с одним проектом, так как если порыться досконально, то много чего придётся долепливать и переделывать. Работа с файлами всегда требует множество разных проверок перед использованием. Например задача - приложение считывающее файл и сохраняющее в файл, вроде просто, но нужно быть готовым ко всему как вы сказали:

При запуске программы
1. Что если директории и файла не существует?
2. Что если директория существует но файл отсутствует?
3. директория и файл существуют, но:
строки в файле удалены
строки испорчены пробелами
есть пропуски строк
файл превратили в хаотический набор символов
файл переименовали или изменили расширение

При выполнении программы, нажатии кнопок и тп
4. А что будет если во время работы программы, вручную удалить файл или папку или испортить файл как сказано выше?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2019, 11:35
Помогаю со студенческими работами здесь

При выводе данных из БД в ListBox появляются пустые строки
У меня такая проблема: при выводе данных из бд в listbox появляются пустые строки cmd.Connection = coon; ...

При считывании текста из файла в ListBox не учитывать пустые строки
При считывании из *txt в листбокс убрать пропуски

Удалить пустые строки
Вот файл: Нужно удалить пустые строки во всём файле, как не пробую ничего не получается (( Если так, то остаются пустые строки в...

Создание динамической панели вместе с добавлением строки в ListBox
Привет всем, как мне реализовать такую фишку, если я добавляю в листбокс строку, чтобы создавалась и динамическая панель, чтобы эта строка...

Удалить пустые строки из файла
Помогите убрать пустые строки на выходе ! Что-то не получается . using System; using System.Collections.Generic; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru