Удаление всех пробелов |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Удаление всех пробелов |
FYzeST |
27.07.2011 10:31
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Помогите написать программу которая в текстовом файле удаляет все пробелы. Сам вроде написал. Знаю как их отследить и удалить, но не могу понять как проделаное программой записать в этот же файл...
|
Lapp |
27.07.2011 11:35
Сообщение
#2
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Помогите написать программу которая в текстовом файле удаляет все пробелы. Сам вроде написал. Знаю как их отследить и удалить, но не могу понять как проделаное программой записать в этот же файл... Поскольку тема в теор.разделе, я не буду писать код, а постараюсь сказать словами.. Заводишь два числа типа LongInt - это будут указатели на место чтения и место записи. Например, rRec и wRec. Инициализируй их нулями. Файл объяви как file of char и открой через Reset. Дальше читаешь по одному символу и каждый раз увеличиваешь счетчик чтения. Если прочитанный символ НЕ является пробелом - делаешь Seek(f,wRec), записываешь этот символ туда, увеличиваешь wRec на 1 и возвращаешься к месту чтения, Seek(f,rRec). Если он является пробелом - не делаешь ничего, а просто читаешь дальше. По окончании файла снова идешь к месту wRec и обрезаешь файл (Truncate(f)). Потом закрываешь файл. Все. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
FYzeST |
27.07.2011 13:53
Сообщение
#3
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Спасибо! Но я не очень понял твой способ, поому что не знаю тех функций.
Глянь код, и скажи если не сложно как дополнить что бы результат функции Delete записался в файл.... Или я тут вобще неправильно все сделал? program counter; |
FYzeST |
27.07.2011 17:00
Сообщение
#4
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Кстате по поводу файлов еще вопрос. У меня текстовый файл с десятью строками. Как я могу получить доступ к одной определенной строке, например к третей ??
|
Lapp |
27.07.2011 20:30
Сообщение
#5
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Твое "удаление пробелов" будет работать неправильно. Не хочу в теоретическом разделе разбирать конкретную задачу с кодом. Попозже перенесу и разделю тему - тогда отвечу.. А вообще, думай, в каком разделе создавать.
И еще.. Не знаешь функции? Ну, посмотри в книге или а Инете.. Или спроси тут. Кстате по поводу файлов еще вопрос. У меня текстовый файл с десятью строками. Как я могу получить доступ к одной определенной строке, например к третей ?? Прямо - никак. Ресетни файл, пропусти нужное кол-во строк, n-1 - и читай. Вот так: Reset(f); -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
FYzeST |
27.07.2011 21:18
Сообщение
#6
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Спасибо большое.
|
Lapp |
28.07.2011 0:09
Сообщение
#7
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Непонятно, как делить тему. Ладно, пусть остается, как есть..
Вот удаление пробелов из файла без переписывания его в новый файл и без особых затрат памяти. var Твой способ удаления пробелов из строки неверен по сути. Он будет удалять только одиночные (или каждый второй в группе) пробелы, а также будет выходить за пределы строки. Если ты заменишь прямой цикл (to) на обратный (downto), то ты исправишь эти ошибки, но останется проблема с его низкой производительностью. Рекомендую почитать вот это: Многократное удаление символов из строки . Там используется фактически тот же способ, что я применил выше к файлу. Если ты хочешь (или должен) обязательно использовать именно текстовые файлы (типа text), то можешь продолжать делать, как делал - читать построчно, удалять пробелы из строки, писать строку в другой файл, потом удалить исходный файл и переименовать результат. При этом ты можешь исправить свою прогу, как я сказал выше, или использовать метод TarasBer'а из FAQ. Но если задача поставлена без ограничений на средства выполнения, то лучше все же работать напрямую с файлом типа file of char. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 29.09.2024 3:48 |