Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Удалить строки без символов но с пробелами

27.12.2014, 13:12. Показов 1275. Ответов 9
Метки нет (Все метки)

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

У меня выскакивает ошибка если пользователь прозевает пустую но с пробелами строку в файле TXT, бывает что и просто пустую строку надо удалить
Вот так я удаляю пустую строку в которой нет даже пробела:
C++
1
2
3
4
5
6
7
8
for(int h = 0; h < Reestr->Count; h++)
    {
    if(Reestr->Strings[h] == "")
      {
      Reestr->Delete(h);
      h--;
      }
    }
а как определить что в строке есть только пробелы?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.12.2014, 13:12
Ответы с готовыми решениями:

Удалить из строки слова, содержащие четное кол-во символов. Слова в строке разделены одним или несколькими пробелами. По
Удалить из строки слова, содержащие четное кол-во символов. Слова в строке разделены одним или несколькими пробелами. Помогите...

Используя множество символов первой строки, удалить все вхождения этих символов из второй строки
Реализовать вариант задачи, используя множества, двумя способами: в виде процедуры и с помощью функции. Программа должна содержать описание...

Используя множество символов первой строки, удалить все вхождения этих символов из второй строки
Реализовать вариант задачи, используя множества, двумя способами: в виде процедуры и с помощью функции. Программа должна содержать описание...

9
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
27.12.2014, 13:42
попробуй использовать Length() для строки, предварительно "урезанной" на пробелы (Trim)
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
27.12.2014, 13:44
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

Кто же удаляет значения из контейнера при прямом проходе? Надо ходить назад:
C++
1
2
3
4
5
6
7
    for(int i = Reestr->Count - 1; i >= 0; i--)
    {
        if(Reestr->Strings[i].Trim() == "")
        {
            Reestr->Delete(i);
        }
    }
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.12.2014, 13:49
volvo, что означает прямой проход? и какя разница как делать проход сверху вниз или снизу вверх?
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
27.12.2014, 13:51
Прямой - это от начала к концу, обратный - от конца к началу
2
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.12.2014, 13:58
Цитата Сообщение от volvo Посмотреть сообщение
Прямой - это от начала к концу, обратный - от конца к началу
А разве нельзя в этом примере делать проход сверху вниз?
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
27.12.2014, 14:00
Ну, вот и будешь добавлять уменьшение переменной цикла, чтобы следующая строка не пропускалась при удалении. Оно тебе надо? А если проходить снизу вверх - ничего корректировать не нужно...
2
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
27.12.2014, 15:36  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Кто же удаляет значения из контейнера при прямом проходе?
В этом коде у меня тоже прямой проход но работает корректно, после удаления строки я делаю откат назад, проверял многократно, может тоже сделать обратный проход?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//старт...
  //начинаем перебирать реестр
  for(int j = 0; j < Reestr->Count; j++)
   {
   Two->CommaText = Reestr->Strings[j];
   Abn.Summ = Two->Strings[0];
   Abn.Fio = Two->Strings[1];
   Abn.Address = Two->Strings[2] + " " + Two->Strings[3];
   Abn.Kv = Two->Strings[4];
   Abn.Dt = Two->Strings[6];
   Abn.Ops = Two->Strings[7];
   ds=(AnsiString(Abn.Address)).UpperCase(); //  ds адрес из реестра
   for(int i = 0; i < Adresa->Count; i++)
    {
     //переправляем в формат адрес без подъезда
     TwoA->CommaText = Adresa->Strings[i];
     df = String( TwoA->Strings[0] + " " + TwoA->Strings[1] ).UpperCase(); //  df адрес без подъезда
        //если df-адрес из базы, равен ds-адресу из реестра
        if(df == ds)
          {
          // делаем запрос в базу по адресу в формате списка адресов и проверяем дату отключения
          ADOQuery5->SQL->Text="SELECT КодАбон From Абоненты WHERE Квартира="+Abn.Kv+" AND АдрКод=(Select АдрКод From Адреса Where Адрес='"+Adresa->Strings[i]+"') AND IsNull(ДатаОтключения)";
          ADOQuery5->Open();
          // передаю в переменную ID запрошенной квартиры
          Abn.Fio=ADOQuery5->Fields->Fields[0]->AsString;
          // делаю проверку если такая квартира в адресе есть, и графа дата отключения пустая
          if(Abn.Fio>0)
            {
            ADOQuery5->SQL->Text="UPDATE Абоненты SET ПоследнийПлатеж=Date(),НаСчету=НаСчету+"+Abn.Summ+" WHERE Квартира="+Abn.Kv+" AND АдрКод=(Select АдрКод From Адреса Where Адрес='"+Adresa->Strings[i]+"')";
            ADOQuery5->ExecSQL();
            ADOQuery5->SQL->Text="INSERT INTO История(КодАбон,Сумма,Дата,Операция,Время) values("+Abn.Fio+","+Abn.Summ+",'"+ StrToDate(Abn.Dt) +"','Внесение',Time())";
            ADOQuery5->ExecSQL();
            ADOQuery5->Close();
            //удаляем из реестра занесенную строку
            Reestr->Delete(j);
            //откатываемся на строчку назад после удаления
            j--;
            }
          }
        }
     }
  //стоп...
  //==============закончили разноску
Добавлено через 1 минуту
Цитата Сообщение от volvo Посмотреть сообщение
чтобы следующая строка не пропускалась при удалении
против этово я сделал:
C++
1
j--;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
27.12.2014, 15:41
Цитата Сообщение от Samrisbe Посмотреть сообщение
может тоже сделать обратный проход?
Я всегда делаю обратный, когда надо что-то удалить. Все-таки, я больше по Паскалю, чем по C++, а в Паскале нельзя изменять переменную цикла внутри этого цикла. Да даже если и С++-ник, на кой делать дополнительные действия, если можно обойтись без них?
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
27.12.2014, 15:47  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Я всегда делаю обратный
Намотаю на ус!

Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2014, 15:47
Помогаю со студенческими работами здесь

Разделить каждые пять символов строки пробелами
Задание:Тип данных:строковый.Дана символьная строка, состоящая из строчных букв без пробелов. Разделить каждые пять символов пробелами. ...

Дополнить строку до 40 символов пробелами в конце строки
Ввести две отдельных строки, содержащие по меньшей мере по 4 слова. Дополнить вторую строку до 40 символов пробелами в конце строки.

Дано целое число K и текстовый файл. Удалить из каждой строки файла первые K символов (если длина строки меньше K, то удалить из нее все символы)
Помогите Пожалуйста написать программу! Дано целое число K и текстовый файл. Удалить из каждой строки файла первые K символов (если длина...

Дан текст состоящий из символов разделенных между собой пробелами. Удалить из них цифры вывести на экран
Дан текст состоящий из символов разделенных между собой пробелами. Удалить из них цифры вывести на экран. надо алгоритм и блок-схема...

Удалить из строки все однобуквенные слова с лишними пробелами
ЗАДАНИЕ:удалить из строки все однобуквенные слова с лишними пробелами program kuku;uses crt; var s:string;//строка из которой будем...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных выбран регистр накопления, в. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru