0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 13
|
|
1 | |
Удаление строк из текстового файла10.12.2011, 10:00. Показов 11391. Ответов 18
Метки нет (Все метки)
Всем привет !
Есть текстовый файл где около 100 тыс. строк. Нужно с заданой строки удалить все строки которые шли до нее. Допустим задать 2500 строку и удалить все 2499 строк до нее. Как можно это осуществить ? Если есть где-то ман по работе с текстом и строками, пожалуйста поделитесь ссылочкой. Буду примного благодарен всем кто поможет Добавлено через 13 часов 32 минуты Весь google перерыл. Везде одна и та же статья по работе со строками, а то чего нужно нет
0
|
10.12.2011, 10:00 | |
Ответы с готовыми решениями:
18
Удаление строк из текстового файла Удаление строк из текстового файла Удаление из текстового документа строк, не удовлетворяющих условию удаление пробелы из текстового файла |
10.12.2011, 10:26 | 2 |
1. Открыть файл на чтение.
2. Организовать перебор строк и поиск искомой строки 3. Если строка найдена, по произвести запись всех остальных строк в temp.txt 4. Удалить файл. 5. Переименовать temp.txt в ваш файл.
0
|
0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 13
|
|
10.12.2011, 10:40 [ТС] | 3 |
0
|
44 / 22 / 2
Регистрация: 20.11.2008
Сообщений: 178
|
|
10.12.2011, 14:12 | 4 |
А собственно совет, то дельный, делаешь перебор по строкам символов так по 1025.
доходишь до нужного тебе номера и дальше с пункта 3.
0
|
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
|
||||||
10.12.2011, 14:27 | 5 | |||||
2
|
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
|
|
10.12.2011, 14:34 | 6 |
При работе с файлом в 100 тыс строк думаю будут наблюдаться задержки.
Может использовать поток?!
0
|
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
|
|
10.12.2011, 14:37 | 7 |
Очевидно. Но поток я писать не буду. Я предоставил алгоритм, все остальное - работа для ТС.
0
|
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
|
|||||||||||
10.12.2011, 16:43 | 8 | ||||||||||
О чем вы говорите - при современных процессорах .У меня удалить все строки до миллионной - заняло 4 секунды.
И опять же потоки - это только эмуляция одновременной работы.Если в одном потоке +++++ а во втором ---------, то результат будет такой +-+-+-+- G4W2, предложил нормальный вариант А я хочу предложить свой
dtsey, я заметил недочеты во-первых если делать так то удаляться будут не те строки(i увеличивается а число строк в st уменьшается - итог - удаляются не те строки) во-вторых две описки точка с запятой в середине первой строки и название файла во второй строке без ' ' Добавлено через 9 минут Алучше вообще так
1
|
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
|
|
10.12.2011, 17:01 | 9 |
igoriy, я писал код в брузере и был занят другим дело. Прощу прощения за недочеты.
0
|
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
|
|
10.12.2011, 17:09 | 10 |
0
|
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
|
|
10.12.2011, 17:10 | 11 |
0
|
0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 13
|
|
10.12.2011, 21:53 [ТС] | 12 |
Спасибо всем за помощь !
0
|
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
|
||||||
16.12.2011, 05:52 | 13 | |||||
вот код о котором вчера разговаривали
1
|
0 / 0 / 0
Регистрация: 30.09.2011
Сообщений: 13
|
|
16.12.2011, 19:39 [ТС] | 14 |
Спасибо
0
|
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
|
|
06.09.2013, 10:09 | 15 |
Добрый день, ну вот никак мне не нравится эта строка, поскольку если файл допустим будет 8 gb то атупеет нето комп нето пользователь ждать пока файл загрузиться (опустим факт что таким способом не более 2 гб) но всеже если вы знаете способ более дельный то скажите как удалить из текстового файла с позиции n до позиции k без использования api.
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
06.09.2013, 10:25 | 16 |
Например, TFileStream.
0
|
Заблокирован
|
|
06.09.2013, 10:43 | 17 |
А зачем вообще циклы и прочая лабуда?
Ну сначала про тысячи строк... Подгружайте частями, найдёте нужное место, и тогда - вперёд. А вперёд, это элементарное копирование потока. Да, это требует памяти. Но количество памяти и скорость всегда были конкурентами. Хотите скорость - гоните памяти побольше, хотите меньше памяти, готовьтесь к длительному процессу со свопингами. Правда после того, как я связался с KOL я уже основательно подзабыл возможности файловых потоков в основном делфи. Но в KOL я делаю это так... Открываю файловый поток. Частями загружаю в мемо, или куда там ещё, текст. Получаю позицию обрезки. Потом открываю другой файловый поток. И копирую в него из первого потока с нужной позиции нужное количество данных. Операция эта хорошо оптимизирована, использует механизм буферизации, и проблем никаких. Только сомневаюсь чтобы текст был хотя-бы на гиг. Кстати, в KOL при записи из ричедит (не помню как с мемо) так же нужно определять позицию начала записи и количество записываемых данных. Так что, стоит положится на благоразумность и оптимальность кода записи и попросту, найдя место вырезки, произвести запись нового файла с этими параметрами.
0
|
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
|
|
16.01.2014, 23:52 | 18 |
есть возможность удалять непосредственно из файла с позиции setfilepointer до n длинной байт и без всей этой лобуды которую предложили ниже.
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
17.01.2014, 01:35 | 19 |
0
|
17.01.2014, 01:35 | |
17.01.2014, 01:35 | |
Помогаю со студенческими работами здесь
19
Удаление записей из текстового файла Удаление лишних пробелов из текстового файла. Удаление фигурных скобок из заданного текстового файла Чтение строк из текстового файла в memo Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |