File (Методичка С++), страница 6

2013-09-07СтудИзба

Описание файла

Файл "File" внутри архива находится в папке "METODY". Документ из архива "Методичка С++", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.

Онлайн просмотр документа "File"

Текст 6 страницы из документа "File"

p: word; { номер страницы}

name: string[20]; { имя файла для распечатки }

const bel=#7; { звуковой сигнал }

ff=#12; { прогон страницы }

begin

writeln(' введите имя файла ');

readln(name);

if name <> ' ' then

begin

assign(f,name);

{$I-} reset(f);{$I+}

if ioresult = 0 then

begin

i:=1;

p:=1;

repeat

if i mod 50 = 0 then

begin

writeln(lst,ff);

write(bel,' страница ',p:3,' закончилась, продолжить Y/N ? ',bel);

readln(c);

if upcase(c) <> 'Y' then

begin

close(f);

halt

end;

inc(p);

for i:=1 to 35 do write(lst,' ');

writeln(lst,'-',p:2,' -');

writeln(lst);i:=1

end;

readln(f,s);

writeln(lst,s);

inc(i);

until eof(f);

writeln(lst,ff);

close(f)

end

else

begin

writeln(' файл с именем ',name,' не существует ');

halt

end;

end

else

begin

writeln(' значение name равно пробелу ');

halt

end;

end.

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

  • Пример 2-14. Обработка текстового файла как символьного.

{ программа формирует строки переменной длины и записывает их в текстовый файл}

Program form_text_file;

type ff=TEXT; {новый тип - текстовый файл }

var

f1:ff; {файловая переменная типа текстовый файл }

a:char;

n,i:integer;

fname,st:string[30];

Begin

writeln('введите имя файла');

readln(fname);

Assign(f1,fname);

rewrite(f1);

randomize;

for a:='A' to 'Z' do

begin {формирование строки случайным количеством букв}

st:='';

n:=random(30)+1;

for i:=1 to n do

st:=st+a;

writeln(f1,st); { записать сформированной строки в текстовый файл}

writeln(st);

end;

close(f1);

end.

{программа открывает сформированный в программе текстовый файл как типизированный типа char и читает его по символу. При этом символ конца строки, воспринимаемый как обычная компонента обрабатывается не стандартно }

Program char_frorm_text_file;

type ff=file of char; {новый тип - символьный файл }

var

f1:ff; {файловая переменная типа файл символов}

a:char;

n,i:integer;

fname,st:string[30];

Begin

writeln('введите имя файла');

readln(fname);

Assign(f1,fname);

reset(f1); {открыть текстовый файл как типизированный на чтение}

while not eof(f1) do { пока не конец файла}

begin

read(f1,a); {читать символ}

st:='';

while (ord(a)<>13) and not eof(f1) do

{до конца строки или до конца файла}

begin

st:=st+a; {добавлять считанный символ в выходную строку}

read(f1,a); { читать очередной символ}

end;

if not eof(f1) then read(f1,a); { если конец строки - читать символ конца строки}

writeln(st); {печатать сформированную строку}

end;

close(f1);

end.

2.4.3.Нетипизированные файлы.

Нетипизированными называются файлы, объявленные без указания типа его компонент. Считывание и запись в такие файлы осуществляется блоками байтов. Отсутствие типа делает эти файлы совместимыми с любыми другими файлами, а обмен блоками позволяет организовать высокоскоростной обмен данными между диском и памятью. Следует отметить, что нетипизированные файлы, как и типизированные являются файлами прямого доступа.

Определить файл можно двумя способами:

1. предварительно ввести новый тип - файл без указания типа компонент, а затем определить файловую переменную этого типа, например

TYPE <имя типа> = FILE;

VAR <файловая переменная >: <имя типа>;

2. сразу определить файловую переменную как файл без определенного типа, например

VAR <файловая переменная >: FILE;

Нетипизированный файл можно открыть на запись и чтение с использованием процедур RESET и REWRITE. При инициализации нетипизированного файла этими процедурами можно указать длину записи файла в байтах вторым параметром. В качестве этого параметра можно использовать выражение типа WORD. Если длина записи не указана, она принимается равной 128 байтам.

RESET (<файловая переменная>,<длина записи>);

REWRITE.(< файловая переменная >,<длина записи>);

<длина записи> - выражение типа WORD.

Borland Pascal не накладывает каких либо ограничений на длину записи нетипизированного файла, за исключением требования положительности и ограничения максимальной длины - 65535 байт ( емкость целого типа WORD ). Однако для обеспечения максимальной скорости обмена данными следует задавать длину, которая была бы кратна длине физического сектора дискового носителя информации (512 байт ). Например:

Кроме того, фактическое пространство на диске выделяется любому файлу порциями - кластерами, которые в зависимости от типа диска могут занимать 2 или более смежных сектора. Для гибких дискет длина кластера равна двум секторам ( 1024 байт ), для жестких дисков емкостью от 10 до 32 Мбайт - 4 или 8 смежных сектора (2048 или 4096 байт). Кластер может быть записан или прочитан за один оборот диска, поэтому наивысшую скорость обмена данными можно получить, если указать длину записи равной длине кластера.

При работе с нетипизиролванными файлами можно использовать все процедуры и функции, доступные типизированным файлам, за исключением процедур READ и WRITE. Эти процедуры заменяются высокоскоростными процедурами BLOCKREAD и BLOCKWRITE.

  1. Процедура BLOCKREAD(<файловая переменная>,<буфер>,<N>[,<NN>]) - осуществляет считывание блока из файла.

<буфер> - буфер - имя переменной, которая будет участвовать в обмене данными, должна быть достаточна для размещения N записей с указанной в процедуре RESE;

<N> - количество записей, которые должны быть прочитаны за одно обращение к диску;

<NN> - необязательный параметр, содержащий количество фактически обработанных записей.

  1. Процедура BLOCKWRITE (<файловая переменная>,<буфер>,<N>[,<NN>]) - осуществляет запись блока из файла.

<буфер> - буфер - имя переменной, которая будет участвовать в обмене данными, должна быть достаточна для размещения N записей с указанной в процедуре REWRITE;

<N> - количество записей, которые должны быть записаны за одно обращение к дискую

Файловая переменная должна быть объявлена как нетипизированный файл и связана с дисковым файлом процедурой ASSIGN. Файл же необходимо открыть на запись или чтение соответствующими процедурами.

  • Пример 2-15. Ускоренное копирование файла.

{ программа копирования нетипизированных файлов}

program copir;

const recs=1024;

var fi,fo:file;{ нетипизированный файл }

buf : array [1..recs] of byte;

i:word;

namein,nameout: string;

begin

writeln(' введите имя файла - источника ');

readln(namein); { имя файла источника }

assign(fi,namein);

{$I-} reset(fi);{$I+} {открыть файл на чтение длина записи по умолчанию =128 б.}

{ проверка наличия файла с указанным именем }

if ioresult <> 0 then

begin

writeln(#7,' нет файла с именем ',namein);

halt

end;

writeln(' введите имя файла - приемника ');

readln(nameout); { имя файла копии }

assign(fo,nameout);

rewrite(fo); {открыть файл на запись длина записи по умолчанию =128 б.}

while not eof(fi) do

begin

blockread(fi,buf,1,i); {читать блок из входного файла в память}

blockwrite(fo,buf,1); {писать из памяти блок в выходной файл }

end;

close(fi);

close(fo)

end.

ОГЛАВЛЕНИЕ

1. Файловая система MS DOS (организация хранения информации на внешних носителях).

2. Файловая система Borland Pascal .

2.1. Общие сведения.

2.2. Стандартные процедуры и функции для работы с файлами.

2.3. Процедуры и функции из библиотеки DOS для работы с файлами

2.4. Операции ввода - вывода Borland Pascal для работы с файлами различной внутренней структуры

2.4.1. Типизированные файлы.

2.4.2. Текстовые файлы.

2.4.3. Нетипизированные файлы.



ПРИЛОЖЕНИЕ 1

Коды некоторых ошибок ввода-вывода.

$00 - ошибка отсутствует.

$02 - файл не найден. Возникает после выполнения процедур RESET, REWRITE, APPEND, RENAME, ERASE, если имя, назначенное файловой переменной, не задает существующий файл.

$03 - путь не найден. Возникает после выполнения процедур RESET, REWRITE, APPEND, RENAME, ERASE, если имя, назначенное файловой переменной, неправильное или задает несуществующую директорию.

$04 - слишком много открытых файлов. Возникает после выполнения процедур RESET, REWRITE, APPEND, если программа имеет слишком много файлов.

$05 - запрещен доступ к файлу. Возникает после выполнения процедуры APPEND, если имя, назначенное файловой переменной, задает фай, предназначенный только для чтения.

$0C - недействительный код доступа к файлу. Возникает после выполнения процедур RESET или APPEND, если значение параметра FILEMODE в файловой переменной не является допустимым.

$0F - неправильный номер дисковода. Возникает после выполнения процедуры GETDIR, если номер дисковода не является допустимым.

$10 - нельзя удалить текущий каталог. Возникает после выполнения процедуры RMDIR, если путь указывает текущий каталог.

$11 - нельзя при переименовании указывать разные дисководы. Возникает после выполнения процедуры RENAME, если оба файла не находятся на одном и том же диске.

$64 - ошибка чтения с диска. Возникает после выполнения процедуры READ для типизированных файлов, если делается попытка чтения после достижения конца файлов.

$65 - ошибка записи на диск. Возникает после выполнения процедур CLOSE, WRITE, WRITELN, FLUSH или BLOCKWRITE, если диск переполнен

$66 - файл не назначен. Возникает после выполнения процедур RESET, REWRITE, APPEND, RENAME, ERASE, если файловой переменной не было присвоено имя с помощью обращения к процедуре ASSIGN.

$67 - файл не открыт. Возникает после выполнения процедур CLOSE, READ, WRITE, SEEK, EOF, FILEPOS, FILESIZE, FLUSH, BLOCKREAD, BLOCKWRITE, если файл не открыт.

$68 - файл не открыт для ввода. Возникает после выполнения процедур READ, READLN, EOF, EOLN, SEEKEOF или SEEKEOLN в текстовом файле, если файл не открыт для ввода.

$69 - файл не открыт для вывода. Возникает после выполнения процедур WRITE или WRITELN в текстовом файле, если файл не открыт для вывода.

$6A - неправильный числовой формат. Возникает после выполнения процедур READ, или READLN если числовое значение, считанное из текстового файла, не соответствует правильному числовому формату.

$96 - защита диска от записи. Возникает при попытке создания файла на защищенном диске или при попытке записи в файл, находящийся на защищенном диске.$98 - дисковод не готов. Возникает при попытке создания файла, либо считывания из файла с дисковода без дискеты, или с отключенного диска.

$98 - дисковод не готов. Возникает при попытке создания файла, либо считывания из файла с дисковода без дискеты или с отключенного дисковода.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5193
Авторов
на СтудИзбе
434
Средний доход
с одного платного файла
Обучение Подробнее