![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Нужно написать прогу, которая создавала файл и записывала:
1.все слова в перевернутом виде; 2.строки в обратном порядке. С первым я справился на ура, а вот со вторым проблемка. Вот код:
Алгоритм таков: пользователь вводит строку с клавы, функция Slovo разбивает на слова переворачивает их и записывае построчно в файл 1.txt. Функция Line читает построчно из файла 1.txt и должна записать в 2.txt сначала последнюю строку потом предпоследню... Фактически функция Line работает, т.е. она записывает в обратоном порядке строки но она еще добавлят очень много мусора. В чем причина? |
|||
|
||||
| remax |
|
||||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Пардон, не дочитал условие. Эта процедура переворачивает строки а не их порядок. Сейчас набрасаю другой вариант- Что-то в этом роде. А использование file of string - в данном случае не допустимо, потому, что предполагает что все строки вашего файла состоят из 255 символов - а это не так.
P.S. программа не проверялась и могут быть мелкие недочеты, но основная идея должна работать - записываем в нетипизированный файл, последовательно отступая от конца файла на длину строки. Это сообщение отредактировал(а) remax - 11.3.2007, 14:18 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
||||
|
|||||
| Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Компилятор почемуто ругается на стрку blockwrite(f2,temp2,n); Eror101: Disk write error
|
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Проверил - все понятно.
В строке 12 должно быть не Reset(f2); а Reset(f2,1); !!!!! И еще один момент- По хорошему - надо проверять как закончилась программа - #13#10 или нет. В первом случае - все нормально, а во втором - проблема, так как если эту строку ставить первой без разделителя - она сольется со второй, кроме того, это усложнит программу. Если не анализировать, (а при записи мы все время добавляем перевод строки) тополучиться что мы выйдем за размер файла на два символа - опять ошибка! Поэтому. Предлагаю, по-тупому, в строке 12 вместо fs:=filesize(f2); записать fs:=filesize(f2)+2; В результате ошибок не будет, но результирующий файл будет на 2 символа длинее... -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
О спасибо, заработало
Это сообщение отредактировал(а) Toohtik - 12.3.2007, 10:27 |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
1) При открытии нетипизированных файлов (типа file) необходимо указать размер записи (по умолчанию 256 байт). В реальных задачах, обычно, лучше использовать 1 байт.
2) #13#10 (перевод строки, возврат каретки) используются в текстовом файле для обозначения конца строки. Когда мы читаем в пременную типа string - эти символы игнорируются и в переменную не записываются. Поэтому, их надо восстанавливать. Если бы мы записывали в текстовый файл, то writeln позволил их записать автоматически. blockwrite - записывает только то, что в буффере. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Toohtik, вопрос на засыпку? зачем понадобилось заморачиваться с File of String, вместо того, чтобы использовать ТОЛЬКО текстовые файлы? Ты что же думаешь, это невозможно? Ошибаешься... Смотри:
|
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |