Вроде несложная задачка..
"В текстовом файле (размер до 600kb) удалить все символы перевода строки."
А как подступиться не знаю.. Мозга не варит Советом, хоть помогите...
Первое, что пришло в голову - читать из файла ReadLn'ом, а писАть Write'ом (правда, придется заводить для этого разные файлы, но я все равно не знаю способа именно изменять файл - умею или только писАть, или только читать )
Перевод строки это если я не ошибаюсь символ #10. Так что мешает. Читай Read'ом символ, и если он не "символ перевода строки", то пиши в новый файл Writ'ом.
Ну а дальше удаляй старый и переименовывай новый.
>sandman
Pascal делает то же самое (читает перевод строки), поэтому скорость зависит от реализации.
>Ivs
#10 #13
>Ну а дальше удаляй старый и переименовывай новый.
Слишком долго, т.к. идёт обращение к винту.
Ivs
Так они по одному редко используются. Тем более в этой задаче. Тем более после ответа про ReadLn.
Ivs.
Я имел ввиду то, что не стоит после каждого нахождения #10 работать с файлами (физически).
Ivs.
P.S. Просьба: не надо меня на Вы. Пожалуйста.
Хорошо тогда так: Читай Read'ом символ, и если он не "символ перевода строки" и "возврата корретки", то пиши в новый файл Writ'ом. Проверил работает.
Вариант с readln'ом не работает.
Ivs.
Наверное, мне придётся извиниться за <06.09.2003 00:40:07>.
Ведь в условии ничего не было про возврат корретки.
Всем спасибо. Все понял. Во всем разобрался
А як же BlockRead/Write??!!
ммм... при чем тут BlockRead? Это же текстовый файл, зачем BlockRead?
Всем спасибо за ответы и предложения, но задача усложняется... Возможно, что файл в koi8-r
Тогда что?
так... По идее, нам все равно, в каком там порядке идут русские буковки (да хоть маковская кодировка, #10#13 они такими и будут). Но. Возможно, мы имеем тогда дело с файлом в стиле Unix, а там принято строку заканчивать не #10#13 а просто #10. Тогда читаем по байту, если это не #10, то записываем.
В общем, все то же самое