Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
5 / 5 / 1
Регистрация: 25.01.2012
Сообщений: 86

Поиск и удаление фрагмента строк в текстовом файле

27.01.2012, 17:38. Показов 4350. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане!
У меня снова возникли вопросы

Затруднение состоит в том, что я не знаю как реализовать такую штуку: при нажатии кнопки из edit1 считывается текст, ищется в текстовом файле, а когда находится, то в строке, содержащей искомый фрагмент, считывается цифра третья по счёту от начала строки и заносится в какую-нибудь переменную. Далее вся строка и находящаяся выше удаляются.

Например:

App10=C:\Program Files\Borland\CBuilder6\Bin\bcb.exe
App10Name=C++ Builder


Ищу C++ Builder, получаю цифру 10, записываю в переменную, удаляю обе строки.

Примечание: строка может находится в любом месте в файле.

Насколько я понимаю, сначала находим строку, содержащую данное слово, возвращаем индекс, потом по индексу ищем строку вновь, а в ней уже нужную цифру и по индексу же удаляем обе строки. Так? Но вот я не могу это реализовать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.01.2012, 17:38
Ответы с готовыми решениями:

Поиск в текстовом файле строк по шаблону и их удаление или замена задаваемой строкой
Помогите создать правильный Batch (CMD/BAT) фалй который будет искать в текстовых файлах строку содержащую в начале ".line 12345"...

Удаление строк в текстовом файле
Нужна помощь есть текстовый файл размер 60Мб. в котором через каждое 256 строк встречаются ненужные 3 сроки надо их удалить. procedure...

Удаление строк в текстовом файле
Доброго времени суток! Требуется помощь. Задача следующая, есть текстовый файл - 1.txt, который содержит 25000+ строк следующего...

13
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
27.01.2012, 17:55
- хорошо, что с примером..., - третья по счету цифра не даст Вам значения номера...
1
5 / 5 / 1
Регистрация: 25.01.2012
Сообщений: 86
27.01.2012, 18:10  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
- хорошо, что с примером..., - третья по счету цифра не даст Вам значения номера...
Да, точно, опечатался, спасибо за замечание Четвёртый символ.

И пожелание: поиск должен производится с конца файла.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
27.01.2012, 18:15
- для случая с Memo текст такой__
C++
1
2
3
4
5
6
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    for (int i=Memo1->Lines->Count-1;i>=0;i--)
      if (Memo1->Lines->Strings[i].Pos("C++ Builder"))
  {     Memo1->Lines->Delete(i); Memo1->Lines->Delete(i-1); break;  } 
}
- это удаление; сохранение номера тоже не сложнее

P.S. я имел ввиду другое
" третья по счету цифра не даст Вам значения номера... "
1
5 / 5 / 1
Регистрация: 25.01.2012
Сообщений: 86
28.01.2012, 12:55  [ТС]
А как удалить только фрагмент строки?
Например:
[BG]
Meter=IMAGE
ImageName=tabstar.png
Y=7
LeftMouseDownAction=!Execute [!HideMeter BG][!HideMeter BG2][!HideMeter BG3][!HideMeterApp1][!HideMeterApp2][!HideMeterApp3][!HideMeterApp4][!HideMeterApp5][!HideMeterApp6][!HideMeterApp7][!HideMeterApp8][!HideMeterApp9] [!Redraw]
Надо найти и удалить [!HideMeterApp5].

Добавлено через 5 часов 33 минуты
Можно, в принципе, просто заменить фрагмент пробелом, но может быть можно как-нибудь удалить этот фрагмент, а не заменять?
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
28.01.2012, 13:39
C++
1
2
3
STR = "LeftMouseDownAction=!Execute [!HideMeter BG][!HideMeter BG2][!HideMeter BG3][!HideMeterApp1][!HideMeterApp2][!HideMeterApp3][!HideMeterApp4][!HideMeterApp5][!HideMeterApp6][!HideMeterApp7][!HideMeterApp8][!HideMeterApp9] [!Redraw]";
 
STR = StringReplace(STR, "[!HideMeterApp5]", "", TReplaceFlags()<<rfReplaceAll);
1
5 / 5 / 1
Регистрация: 25.01.2012
Сообщений: 86
28.01.2012, 16:59  [ТС]
Ещё один вопрос по теме: пытаюсь удалить 8 строк ниже по найденому индексу первой строки - удаляется как-то коряво.

u-переменная, содержащая индекст первой строки.
C++
1
2
3
4
5
6
7
8
sl->Delete(u);
sl->Delete(u+1);
sl->Delete(u+2);
sl->Delete(u+3);
sl->Delete(u+4);
sl->Delete(u+5);
sl->Delete(u+6);
sl->Delete(u+7);
Что не так?

Добавлено через 55 минут
Всё, разобрался.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.01.2012, 17:10
И что было "не так" ?
0
5 / 5 / 1
Регистрация: 25.01.2012
Сообщений: 86
28.01.2012, 17:17  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
И что было "не так" ?
Я просто 8 раз прописал:
C++
1
sl->Delete(u);
Мне кажется, надо было через цикл делать, но я не знаю как

Добавлено через 5 минут
Что-то я завис... А как удалить последнюю строку в текстовом файле? Без разницы что в ней содержится.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.01.2012, 17:18
C++
1
2
3
4
int i;
for (i=0;i<=8;i++) {
  sl->Delete(u+i);
}
Добавлено через 55 секунд
последнюю строку
C++
1
sl->Delete(sl->Count-1);
1
5 / 5 / 1
Регистрация: 25.01.2012
Сообщений: 86
28.01.2012, 17:20  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
int i;
for (int i = 0;i<=8;i++) {
  sl->Delete(u+i);
}
Добавлено через 55 секунд
C++
1
sl->Delete(sl->Count-1);
Спасибо!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.01.2012, 17:22
я там поправил:
C++
1
2
3
4
int i;
for (i=0;i<=8;i++) {
  sl->Delete(u+i);
}
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
28.01.2012, 17:25
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
int i;
for (i=0;i<=8;i++) {
  sl->Delete(u+i);
}
C++
1
2
3
4
for (i=0;i<8;i++) 
{
sl->Delete(u);
}
Так как после удаление индексы в листе смещаются.
2
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.01.2012, 17:28
точно
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2012, 17:28
Помогаю со студенческими работами здесь

Поиск и удаление в текстовом файле
В общем полное задание такое: Имеем несколько файлов, нужно написать программу, которая будет объединять файлы в один (причем в самом...

В текстовом файле удаление не парных строк
Не получаетса написать прогу которая будет удалать непарные строки. Прошу помоч. Вот наброски : Program StrokaDel; uses...

Замена и удаление строк в текстовом файле
Добрый день! Есть txt файл, который содержит след. информацию. Подскажите пожалуйста, как удалить кусок текста и заменить на другую...

Поиск, замена, удаление в текстовом файле
Добрый день. У меня есть текстовый файл с информацией(типа: № Имя Фамилия). Как можно осуществить поиск по номеру записи и вывод ее в...

удаление строки в текстовом файле и поиск.
Здарова всем! У меня проблема с написанием кода в Паскале! 1.Вобщем как можно удалить строку (ту которую я захочу) в текстовом...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru