1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
| maklir |
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Михаил Репутация: 0 |
так как можно перевести запись на нужную строку?
|
![]() ![]() |
| andriano |
Сообщение
#2
|
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Ультиматум?
Не принимаю. Изложу лишь алгоритм, а код - если посчитаю, что есть такая необходимость. Сперва несколько пояснений: текстовым файлом называется не тот, который открыт в Паскале с типом "text", а тот, который содержит текстовыю информацию в не жестком, но вполне определенном формате. Особенности: 1. Файл содержит только символы с номерами 9, 10, 12, 13, 32-255, в некоторых случаях могут присутствовать также 7, 26 и 27. 2. Файл разделен на строки - последовательности символов произвольной длины, разделенные либо символом с кодом 10, либо парой 13, 10 именно в такой последовательности. 3. Файл может оканчиваться символом 26 или несколькими такими символами. При этом последним символом файла считается символ, предшествующий первому символу 26. 4. Если файл предназначен для вывода на консоль, он может содержать символы 7 и 27. 5. Текстовый файл содержит информацию в виде текста, т.е. в виде пригодном для чтения человеком - глазами. В том числе и числовую информацию. 6. Файлы, не содержащие информацию в пригодном для взгляда человека виде, текстовыми не считаются даже в том случае, если удовлетворяют остальным требованиям по структуре и набору символов. Это для того, чтобы было понятно, что понимается пд текстовым файлом. Теперь сам алгоритм (считаем, что надо заменить строку номер n строкой s, имеющей длину l). 1. Открываем текстовый файл как нетипизированный или типизированный "char" или "byte". 2. Сканируем файл до тех пор, пока не обнаружим n-1-й разделитель в виде символа 10 или символьной пары 13,10 или до конца файла. 3. Если обнаружен конец файла, выводим сообщение о том, что выполнить требуемую операцию невозможно, т.к. файл содержит менее n строк. Завершаем программу. 4. Иначе - запоминаем позицию первого символа после n-1-го разделителя. 5. Продолжаем сканировать строку, чтобы убедиться, что между n-1-м и n-ым разделителями или до конца файла находится ровно l символов. 6. Если равенство не выполнено, выводим сообщение о том, что выполнить требуемую операцию невозможно из-за того, что строки имеют различную длину. Завершаем программу. 7. Если равенство выполнено - продолжаем. 8. Позиционируем файл на запомненную позицию первого символа после n-1-го разделителя. 9. Вписываем в тело файла тело строки. 10. Закрываем файл. 11. Сообщаем пользователю об успешно выполненной операции. 12. Завершаем программу. Примечание: при необходимости вместо завершения программы в п.6 можно осуществить переход на другой алгоритм звмены строки. Аналогично если в файле обнаружено ровно n-2 разделителя (п.3) - на дописывание строки в конец файла (вместе с предшествующим разделителем). PS. Что тебе надоело - твое личное дело, но на форуме,насколько я знаю, существуют правила, поэтому следует не разбрасываться словами типа "бан на неделю", а указать конкретный пункт правил, который был нарушен. Мы, вроде, не в детской песочнице. |
maklir вопрос по текстовым файлам 3.01.2008 23:18
мисс_граффити только последовательно...
for i:=1 to <куда там… 3.01.2008 23:30
Gendalf Вообще-то для записей лучше использовать файлы с п… 5.01.2008 23:52
andriano
так как можно перевести запись на нужную строку?
… 6.01.2008 1:16
klem4 :dry:
Интересно, а если нужно одну строку заме… 6.01.2008 1:30
andriano Интересно, а если нужно одну строку заменить друго… 6.01.2008 2:12
klem4 Код в студию для текстового файла, в противном слу… 6.01.2008 2:26
Michael_Rybak
Дальше не читал.
На форуме "Все о Паскале… 6.01.2008 4:06
andriano На форуме "Все о Паскале", в теме … 6.01.2008 4:39
Michael_Rybak
Да. И твое - не одно из них.
У меня есть один… 6.01.2008 4:59
klem4
да что уж там, последовательность бит, зачем же … 6.01.2008 15:58![]() ![]() |
|
Текстовая версия | 8.11.2025 12:38 |