Строки... |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строки... |
sandman |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 101 Пол: Мужской Репутация: 0 |
Вроде несложная задачка..
"В текстовом файле (размер до 600kb) удалить все символы перевода строки." А как подступиться не знаю.. Мозга не варит Советом, хоть помогите... -------------------- Плавают разными стилями, тонут-одним (ц) Кирпичи
|
trminator |
Сообщение
#2
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Первое, что пришло в голову - читать из файла ReadLn'ом, а писАть Write'ом (правда, придется заводить для этого разные файлы, но я все равно не знаю способа именно изменять файл - умею или только писАть, или только читать )
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Ivs |
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Перевод строки это если я не ошибаюсь символ #10. Так что мешает. Читай Read'ом символ, и если он не "символ перевода строки", то пиши в новый файл Writ'ом.
Ну а дальше удаляй старый и переименовывай новый. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
sandman |
Сообщение
#4
|
Пионер Группа: Пользователи Сообщений: 101 Пол: Мужской Репутация: 0 |
Цитата Перевод строки это если я не ошибаюсь символ #10. Так что мешает. Читай Read'ом символ, и если он не "символ перевода строки", то пиши в новый файл Writ'ом. Ну а дальше удаляй старый и переименовывай новый. тогда имхо быстрее будет так, как написал trminator... -------------------- Плавают разными стилями, тонут-одним (ц) Кирпичи
|
Ivs |
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Цитата тогда имхо быстрее будет так, как написал trminator... Нет, так будет неправильно. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
zx1024 |
Сообщение
#6
|
Пионер Группа: Пользователи Сообщений: 119 Пол: Мужской Репутация: 0 |
>sandman
Pascal делает то же самое (читает перевод строки), поэтому скорость зависит от реализации. >Ivs #10 #13 >Ну а дальше удаляй старый и переименовывай новый. Слишком долго, т.к. идёт обращение к винту. |
Ivs |
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Цитата >Ivs #10 #13 . А я думал что это символы перевода строки и возврата корретки. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
Ivs |
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Цитата >Ну а дальше удаляй старый и переименовывай новый. Слишком долго, т.к. идёт обращение к винту. Ваш вариант. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
zx1024 |
Сообщение
#9
|
Пионер Группа: Пользователи Сообщений: 119 Пол: Мужской Репутация: 0 |
Ivs
Так они по одному редко используются. Тем более в этой задаче. Тем более после ответа про ReadLn. |
zx1024 |
Сообщение
#10
|
Пионер Группа: Пользователи Сообщений: 119 Пол: Мужской Репутация: 0 |
Ivs.
Я имел ввиду то, что не стоит после каждого нахождения #10 работать с файлами (физически). |
zx1024 |
Сообщение
#11
|
Пионер Группа: Пользователи Сообщений: 119 Пол: Мужской Репутация: 0 |
Ivs.
P.S. Просьба: не надо меня на Вы. Пожалуйста. |
Ivs |
Сообщение
#12
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Хорошо тогда так: Читай Read'ом символ, и если он не "символ перевода строки" и "возврата корретки", то пиши в новый файл Writ'ом. Проверил работает.
Вариант с readln'ом не работает. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
Ivs |
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 209 Репутация: 0 |
Цитата Ivs. P.S. Просьба: не надо меня на Вы. Пожалуйста. Как хочешь. -------------------- Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
|
zx1024 |
Сообщение
#14
|
Пионер Группа: Пользователи Сообщений: 119 Пол: Мужской Репутация: 0 |
Ivs.
Наверное, мне придётся извиниться за <06.09.2003 00:40:07>. Ведь в условии ничего не было про возврат корретки. |
sandman |
Сообщение
#15
|
Пионер Группа: Пользователи Сообщений: 101 Пол: Мужской Репутация: 0 |
Всем спасибо. Все понял. Во всем разобрался
-------------------- Плавают разными стилями, тонут-одним (ц) Кирпичи
|
trminator |
Сообщение
#16
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Цитата Вариант с readln'ом не работает. Я согласен, правильнее было бы обрабатывать по символам, как ты рекомендовал. Но это грустно и тоскливо (по-моему). Поэтому я предложил такой способ. Но мне интересно, почему он у тебя не проходит. Я его только что прогнал - он работает (Delphi console application) Код program Project2; {$APPTYPE CONSOLE} uses SysUtils; var input, output : text; s: string; begin assign(input,'input.txt'); assign(output,'output.txt'); reset(input); rewrite(output); while not EOF(input) do begin ReadLn(input,s); Write(output,s) end; close(input); close(output); end. Сейчас проверю в BP7 -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
GLuk |
Сообщение
#17
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
А як же BlockRead/Write??!!
|
trminator |
Сообщение
#18
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
ммм... при чем тут BlockRead? Это же текстовый файл, зачем BlockRead?
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
sandman |
Сообщение
#19
|
Пионер Группа: Пользователи Сообщений: 101 Пол: Мужской Репутация: 0 |
Всем спасибо за ответы и предложения, но задача усложняется... Возможно, что файл в koi8-r
Тогда что? -------------------- Плавают разными стилями, тонут-одним (ц) Кирпичи
|
trminator |
Сообщение
#20
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
так... По идее, нам все равно, в каком там порядке идут русские буковки (да хоть маковская кодировка, #10#13 они такими и будут). Но. Возможно, мы имеем тогда дело с файлом в стиле Unix, а там принято строку заканчивать не #10#13 а просто #10. Тогда читаем по байту, если это не #10, то записываем.
В общем, все то же самое -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Текстовая версия | 22.12.2024 1:09 |