Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Разрешите спор по файлам...


Автор: Pakshin A. S. 23.6.2005, 11:35
есть код:
Код

var
 f: file of char;
 c: char;
begin
 Assign(f, 'C:\Demo.txt');
 rewrite(f);
 c:='a';
 write(f, c);
 reset(f);
 c:='b';
 write(f, c);
 Close(f);
end.

Это правильный код с позиции теории? С позиции практики он верен и мне человек утверждает, что это глюки паскаля и выше...

Что думаете по поводу?

Автор: Vit 23.6.2005, 15:02
Аааа зачем? В чём смысл?

Автор: Pakshin A. S. 23.6.2005, 15:47
Ну смысл кода практически отсутствует, но он показывает, что можно писать в файл, когда он открыт процедурой reset()...

Автор: Vit 23.6.2005, 15:56
Конечно можно... А в чём проблемы? И всегда можно было... Не понял вообще прикола... Reset запрещает на запись открывать только текстовые файлы... А типизированные или не типизированные, всегда открывались reset и на запись и на чтение....

Автор: Pakshin A. S. 23.6.2005, 15:59
А почему текстовые не открываются, а остальные открываются... Есть различия в их структуре?

P. S.
Нас учат, что reset открывает только на чтение... вот поэтому очень многие не согласны с моим уверждением по поводу работы с типизированными файлами...

Автор: Romtek 23.6.2005, 18:10
Всё нормально, никаких подвохов не вижу.
Rewrite перезапишет или создаст файл,
Reset откроет файл на чтение и запись одновременно. Режим открытия изменяется переменной FileMode. Всё!

Автор: Vit 23.6.2005, 19:42
Цитата(Pakshin @ 23.6.2005, 06:59)
А почему текстовые не открываются, а остальные открываются... Есть различия в их структуре?


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

Цитата(Pakshin @ 23.6.2005, 06:59)
Нас учат, что reset открывает только на чтение... вот поэтому очень многие не согласны с моим уверждением по поводу работы с типизированными файлами...


А открыть help и прочитать не судьба? Или у преподавателей квалификации для этого не хватает? Могу только посочуствовать, что у вас преподаватели никогда реально ничего не программировали и не знают самых азов...


Автор: Pakshin A. S. 23.6.2005, 20:09
Цитата
А открыть help и прочитать не судьба? Или у преподавателей квалификации для этого не хватает? Могу только посочуствовать, что у вас преподаватели никогда реально ничего не программировали и не знают самых азов...


smile

Спасиб за подтверждение моих слов! smile smile

Автор: Aleche 30.8.2005, 22:12
Я в зле!!!!!!!!!!!!Просто не могу!!!!!!На экзамене мой препод поставил мне неуд за то, что я использовала процедуру reset для записи в конец файла!!!!!!!!! Мотивировал свое поведение в итоге тем, что я пока этого не должна знать!!!! Узнаю на 2 курсе!!!!!!!!!!!!

Автор: Pakshin A. S. 31.8.2005, 20:47
Aleche Гы... ай молодца... Олег Данилович разумеется постарался? А тебе нужно было просто два варианта сделать (как в лекциях и как по уму): у нас народ так делал и всем плюсик был...

Автор: Romtek 1.9.2005, 00:59
Цитата(Aleche @ 30.8.2005, 22:12)
Мотивировал свое поведение в итоге тем, что я пока этого не должна знать!!!! Узнаю на 2 курсе!!!!!!!!!!!!
Этим препод хочет внушить, что лишние знания только вредят. В шею гнал бы такого препода. smile

Если есть возможность, подай аппеляцию. У нас в инсте такое практикуется.

Автор: Marriage 2.9.2005, 10:23
Цитата(Aleche @ 30.8.2005, 22:12)
На экзамене мой препод поставил мне неуд за то, что я использовала процедуру reset для записи в конец файла!!!!!!!!!


Дык может файл был текстовым ??

Автор: Pakshin A. S. 2.9.2005, 17:01
Цитата(Marriage @ 2.9.2005, 11:23)
Дык может файл был текстовым ??

Мы не проходили текстовики (вроде как... я на лекциях занимаюсь сторонними делами)... Должен был быть обычный типизированный файлик.

Автор: Aleche 3.9.2005, 20:23
Marriaqe,речь идет о типизированном файле (даже судя из первой выкладки... smile ) В моем случае ,был файл типа integer...

PakshinA.S.,текстовые файлы мы проходили и на лекциях! smile Да ладно,все это ерунда,подумаешь неуд, перездать в конце концов можно,но оччччень обидно smile

Автор: mr.Anderson 4.9.2005, 10:53
Крут препод у вас. Я бы от такого бежал за триста миль... "Лишними" знания не бывают, как и деньги, впрочем... smile
P.S. "Лишними знания не бывают" - цитата из Mayk'a.

Автор: Pakshin A. S. 5.9.2005, 20:19
Цитата(Aleche @ 3.9.2005, 21:23)
текстовые файлы мы проходили и на лекциях

Упс... видимо я чем-то был очень занят... smile

Автор: Aleche 6.9.2005, 20:26
Ужас!!!!!
Меня сегодня мой любимый преподаватель(пример подражания smile )уверял,что все-таки нельзя reset использовать для записи!!!!!Грубейшая ошибка!!!! smile smile

Автор: Pakshin A. S. 6.9.2005, 20:31
Цитата(Aleche @ 6.9.2005, 21:26)
Меня сегодня мой любимый преподаватель(пример подражания  )уверял,что все-таки нельзя reset использовать для записи!!!!!Грубейшая ошибка!!!!

smile Ну это смотря как ему приподнести все это использование... т. е. какой пример приводить и в какой среде программирования, т. к. лично я не уверен, что все это возможно в эталонном паскале... так ли это?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)