IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> файл и его конец-точка.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский
Реальное имя: света

Репутация: -  0  +


здра все.
подскажите пжалста, как записать данные в текстовый файл, если неизвестно кол-во его элементов, а дан признак конца ввода? в моём случае-точка.
и ещё вопрос. как текстовый файл разделять на строки?

*не пинайте ногами, мну новичок..*
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Ну во первых Файлы

Если прочитаешь, все вопросы у тебя должны пропать ну или большая часть. Во вторых:
Цитата
подскажите пжалста, как записать данные в текстовый файл


В каком виде данные ? Строка ? массив строк ? текстовый файл или еще что-то ?

Цитата
как текстовый файл разделять на строки?


Это как понять ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский
Реальное имя: света

Репутация: -  0  +


Цитата(klem4 @ 3.12.2006 21:48) *


В каком виде данные ? Строка ? массив строк ? текстовый файл или еще что-то ?
Это как понять ?


blush.gif сама не знаю.. дан текст, оканчивающийся точкой. сказано-обрабатывать построчно. похоже, что массив строк.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Цитата
сама не знаю.. дан текст, оканчивающийся точкой. сказано-обрабатывать построчно. похоже, что массив строк.
ReadLn(f, s); где f - файловая переменная, s - строковая переменная
Цитата
подскажите пжалста, как записать данные в текстовый файл, если неизвестно кол-во его элементов, а дан признак конца ввода? в моём случае-точка.
Разве то, что не известно кол-во элементов мешает записывать данные?


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский
Реальное имя: света

Репутация: -  0  +


Цитата(Archon @ 3.12.2006 23:22) *


ReadLn(f, s); где f - файловая переменная, s - строковая переменная


спасибо, теперь въехала в разницу в read/readln у файлов))

Цитата(Archon @ 3.12.2006 23:22) *


Разве то, что не известно кол-во элементов мешает записывать данные?


мне мешает) не могу сформулировать условие, по выполнению которого надо переставать вводить символы. если просто со строкой, то всё нормально. а как с файлом это сотворить - не соображу.
опишу на своём примитивном "я ему.. а он мне..". так вот. я ему:ReadLn(f, s). он мне: ок, давай сюда свою строчку. я ему: держи*вводит строку, нажимает enter* он мне:всё, файл создан. и давай дальше там строку преобразовывать так, как я его до этого просила. а я ещё не весь файл ввела! и теперь глупый вопрос:что я делаю не так? нужно ReadLn(f, s) столько раз, сколько строк? так я ж не знаю, сколько их. while not eof? вроде тоже нет, у файла и конца-то нет пока, я ж его только создаю.. блин wacko.gif

пс. я не блондинка))я сплю по 3 часа в сутки.. результат прямо отражается на мозгах)

Сообщение отредактировано: svetkom -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


svetkom, тебя не очень просто понять. Иногда ты говоришь о записи файла (сначала), иногда о вводе его с клавиатуры.. Похоже, тебе действительно не помешало бы побольше спать smile.gif
Попробую сказать, как я понял.
Предположим, что твоя программа должна читать текстовые данные (то есть алфавитно-цифровые и знаки препинания, разделенные на строки). Ввод при этом можно осуществлять с разных устройств (например, с диска), но в данном случае возьмем клавиатуру.

Введенную информацию надо где-то сохранять (как правило). Сохранять можн, например, в массиве строк (заведомо большего размера, чем возможное количество строк). Можно в списке (это такая структура с последовательным доступом к элементам), можно еще сотней разных способов. Но самое простое - сохранить их в файл на диске (мне кажется, ты этого и хотела).

Если ты заранее не знаешь количество вводимых строк, то ввод нужно осуществлять в цикле типа while или repeat. Вот один из возможных вариантов:
var
f:text; {заводим переменную типа текстовый файл для сохранения результатов}
...
{затем, уже в теле программы}
Assign(f,'svetkom.txt');
ReWrite(f);
repeat
ReadLn(s);
WriteLn(f,s)
until s='.' {условие окончания ввода}
Close(f)

Обрати внимание, что признаком конца ввода тут является отдельностоящая точка, то есть строка ничего больше не содержит, кроме этой точки. (Кстати, забавно, именно такой признак конца ввода данных в протоколе SMTP, который пересылает твои e-mail'ы smile.gif)

Кстати, можно использовать и EoF. Признком конца текстового файла является Ctrl-Z. То есть, можешь использовать вот такую структуру:
while not EoF do ReadLn;
- этот ввод завершится по нажатии Ctrl-Z, а за ним Enter.
Прояснилось немного?.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский
Реальное имя: света

Репутация: -  0  +


lapp,ага!!прояснилось! насчёт конца файла всё поняла, урра) и ты мой вопрос тоже правильно понял) хотя я сама там запуталась )
сделала по последнему варианту, с EoF, всё сработало. smile.gif
пасиибо!

Сообщение отредактировано: svetkom -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 2:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name