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

Удалить из StringList строки зная их индекс

11.03.2015, 11:21. Показов 3276. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добро всем!
Как удалить из StringList строки зная их индексы которые тоже в StringListе . Я сам пробую но столкнулся со смещением индексов после удаления...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2015, 11:21
Ответы с готовыми решениями:

Вывести символ на консоль зная его индекс внутри строки
известен индекс символа в строке, как этот символ вывести на консоль

Как получить индекс строки в Datagrid, зная значение поля "ID"
Ищу значение в базе: SqlCom = New OleDb.OleDbCommand("SELECT * FROM WHERE (nameInfo like '%" & txtSearch.Text & "%')", con) con.Open()...

Удалить строки из текстового файла, зная номера строк
Здравствуйте, как можно удалить строки из текстового файла, при том, что 1 массив строк выглядит следующим образом: string lines =...

7
place status here
 Аватар для gunslinger
3185 / 2219 / 640
Регистрация: 20.07.2013
Сообщений: 5,999
11.03.2015, 12:10
А изменять индексы строк ниже той, которую удалили, на -1 после каждого удаления?
1
Модератор
 Аватар для D1973
9905 / 6442 / 2455
Регистрация: 21.01.2014
Сообщений: 27,348
Записей в блоге: 3
11.03.2015, 13:37
Samrisbe, может быть, я не совсем понял вопрос, но о каком смещении индексов идет речь? Вот такой вот пример...
Есть файл
ssssssssssss
dddddddddd
fffffffffffffffff
gggggggggg
hhhhhhhhhh
Есть код
C++
1
2
3
4
5
6
TStringList *s = new TStringList;
s->LoadFromFile("c:\\temp\\123.txt");
ShowMessage(s->Strings[3]);
s->Delete(3);
ShowMessage(s->Strings[3]);
delete s;
До удаления строка с индексом 3 - gggggggggg; после удаления - hhhhhhhhhh... Как бы сами индексы меняются...
Или что-то не то подразумевается?
1
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.03.2015, 18:48
Samrisbe, Удаляй начиная с конца списка.
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
11.03.2015, 19:26  [ТС]
не пойму почему выдает ошибку...
В файле Raznes индексы строк которые следует удалить:
295
294
293
292
291

Reestr файл в котором надо удалить строки
вот цикл:
C++
1
2
3
4
  for(int q = 0; q < Raznes->Count; q++)
    {
    Reestr->Delete(StrToInt(Raznes->Strings[q]));
    }
выдает ошибку list index out jf bounds

я уже думаю не по индексам удалять а по содержанию строки...
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
11.03.2015, 20:38
Цитата Сообщение от Samrisbe Посмотреть сообщение
не пойму почему выдает ошибку
Ну так из-за смещения и выдаёт. После каждого удаления номер следующей удаляемой строки надо уменьшать на 1
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
11.03.2015, 20:42  [ТС]
Понимаю что сделал с лишними телодвижениями но так зато меньше сюрпризов и подводных камней...
1) шаг сохраняю в Raznes строки которые затем надо удалить.
2) шаг передаю в AnsiString содержимое файла Reestr (в котором и надо удалить разнесенные строки Шаг 1)
3) шаг заменяю содержимое разнесенной строки на пустоту
4) шаг удаляю все пустые строки
C++
1
2
3
4
5
6
7
  list = Reestr->Text;
  newtext = "";
  for(int q = 0; q < Raznes->Count; q++)
    {
    oldtext = Raznes->Strings[q];
    list = StringReplace(list,oldtext,newtext,TReplaceFlags()<<rfReplaceAll);
    }
Меня удивляет что это работает))
Если есть замечания по этому поводу, пишите.
0
Модератор
 Аватар для D1973
9905 / 6442 / 2455
Регистрация: 21.01.2014
Сообщений: 27,348
Записей в блоге: 3
11.03.2015, 22:11
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

Samrisbe, можно вот так как-то сделать...
1. Есть 2 глобальных СтрингЛиста.
C++
1
2
TStringList *List = new TStringList;      //Полный список
TStringList *Raznes = new TStringList; //Номера строк для удаления
2. Загружаем в них данные (Мемо чисто для демонстрации нужно)
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  List->LoadFromFile("c:\\1\\1.txt");
  Raznes->LoadFromFile("c:\\1\\2.txt");
  Memo1->Text = List->Text;
  Memo2->Text = Raznes->Text;
}
3. А вот само "удаление". Создаем временный стринглист. Циклом проходим по основному списку и если номер индекса строки отсутствует в стринглисте Raznes - добавляем эту строку во временный стринглист. После того, как цикл завершился - очищаем основной лист и записываем в него содержимое временного листа. Временный лист грохаем
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  TStringList *Temp = new TStringList;
  for(int i = 0; i < List->Count; i++)
    if(Raznes->IndexOf(IntToStr(i)) == -1)
      Temp->Add(List->Strings[i]);
  List->Text = Temp->Text;
  delete Temp;
  Memo3->Text = List->Text;
}
Миниатюры
Удалить из StringList строки зная их индекс  
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2015, 22:11
Помогаю со студенческими работами здесь

ListBox узнать текст зная индекс элемента и узнать индекс зная текст элемента
Мне нужно что-то в этом роде for(int b ; b &lt; listBox1.Items.Count ; b++) { string name = Узнаем текст по индексу b; }

Удалить мусор из StringList
Помогите пожалуйста удалить мусор из StringList нужно чтоб только логин остался. Fredbob&quot; style=&quot;background-image:...

Найти индекс первого вхождения символа в строке, удалить из строки другой символ по индексу
1. Дано предложение, в котором имеется несколько букв «е». Найти порядковый номер первой из них. 2.Дано слово. Удалить из него букву под...

Как удалить дубликаты из stringlist без сортировки?
как удалить дубликаты из stringlist без сортировки? быстро. объём - 100 тыс.-500 тыс. записей. вернее, даже не удалить из готового...

Удалить с Memo строку которая есть в StringList'e ??
procedure TForm1.Button5Click(Sender: TObject); var i,j,c,b,k,lc:integer; begin For i:= 0 to Memo1.Lines.Count-1 do ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru