здра все.
подскажите пжалста, как записать данные в текстовый файл, если неизвестно кол-во его элементов, а дан признак конца ввода? в моём случае-точка.
и ещё вопрос. как текстовый файл разделять на строки?
*не пинайте ногами, мну новичок..*
![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
svetkom |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Реальное имя: света Репутация: ![]() ![]() ![]() |
здра все.
подскажите пжалста, как записать данные в текстовый файл, если неизвестно кол-во его элементов, а дан признак конца ввода? в моём случае-точка. и ещё вопрос. как текстовый файл разделять на строки? *не пинайте ногами, мну новичок..* |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Ну во первых Файлы
Если прочитаешь, все вопросы у тебя должны пропать ну или большая часть. Во вторых: Цитата подскажите пжалста, как записать данные в текстовый файл В каком виде данные ? Строка ? массив строк ? текстовый файл или еще что-то ? Цитата как текстовый файл разделять на строки? Это как понять ? -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
svetkom |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Реальное имя: света Репутация: ![]() ![]() ![]() |
|
Archon |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата сама не знаю.. дан текст, оканчивающийся точкой. сказано-обрабатывать построчно. похоже, что массив строк. ReadLn(f, s); где f - файловая переменная, s - строковая переменнаяЦитата подскажите пжалста, как записать данные в текстовый файл, если неизвестно кол-во его элементов, а дан признак конца ввода? в моём случае-точка. Разве то, что не известно кол-во элементов мешает записывать данные?-------------------- Close the World...txeN eht nepO
|
svetkom |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Реальное имя: света Репутация: ![]() ![]() ![]() |
ReadLn(f, s); где f - файловая переменная, s - строковая переменная спасибо, теперь въехала в разницу в read/readln у файлов)) Разве то, что не известно кол-во элементов мешает записывать данные? мне мешает) не могу сформулировать условие, по выполнению которого надо переставать вводить символы. если просто со строкой, то всё нормально. а как с файлом это сотворить - не соображу. опишу на своём примитивном "я ему.. а он мне..". так вот. я ему:ReadLn(f, s). он мне: ок, давай сюда свою строчку. я ему: держи*вводит строку, нажимает enter* он мне:всё, файл создан. и давай дальше там строку преобразовывать так, как я его до этого просила. а я ещё не весь файл ввела! и теперь глупый вопрос:что я делаю не так? нужно ReadLn(f, s) столько раз, сколько строк? так я ж не знаю, сколько их. while not eof? вроде тоже нет, у файла и конца-то нет пока, я ж его только создаю.. блин ![]() пс. я не блондинка))я сплю по 3 часа в сутки.. результат прямо отражается на мозгах) Сообщение отредактировано: svetkom - |
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
svetkom, тебя не очень просто понять. Иногда ты говоришь о записи файла (сначала), иногда о вводе его с клавиатуры.. Похоже, тебе действительно не помешало бы побольше спать
![]() Попробую сказать, как я понял. Предположим, что твоя программа должна читать текстовые данные (то есть алфавитно-цифровые и знаки препинания, разделенные на строки). Ввод при этом можно осуществлять с разных устройств (например, с диска), но в данном случае возьмем клавиатуру. Введенную информацию надо где-то сохранять (как правило). Сохранять можн, например, в массиве строк (заведомо большего размера, чем возможное количество строк). Можно в списке (это такая структура с последовательным доступом к элементам), можно еще сотней разных способов. Но самое простое - сохранить их в файл на диске (мне кажется, ты этого и хотела). Если ты заранее не знаешь количество вводимых строк, то ввод нужно осуществлять в цикле типа while или repeat. Вот один из возможных вариантов: var Обрати внимание, что признаком конца ввода тут является отдельностоящая точка, то есть строка ничего больше не содержит, кроме этой точки. (Кстати, забавно, именно такой признак конца ввода данных в протоколе SMTP, который пересылает твои e-mail'ы ![]() Кстати, можно использовать и EoF. Признком конца текстового файла является Ctrl-Z. То есть, можешь использовать вот такую структуру: while not EoF do ReadLn; - этот ввод завершится по нажатии Ctrl-Z, а за ним Enter. Прояснилось немного?.. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
svetkom |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Реальное имя: света Репутация: ![]() ![]() ![]() |
lapp,ага!!прояснилось! насчёт конца файла всё поняла, урра) и ты мой вопрос тоже правильно понял) хотя я сама там запуталась )
сделала по последнему варианту, с EoF, всё сработало. ![]() пасиибо! Сообщение отредактировано: svetkom - |
![]() ![]() |
![]() |
Текстовая версия | 16.05.2025 16:55 |