Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП / lec_06_07.ppt
Скачиваний:
20
Добавлен:
19.04.2015
Размер:
541.7 Кб
Скачать

function IOResult:Integer;

возвращает - число 0, если последняя операция

ввода/вывода завершилась успешно,

- другое число в противном случае.

При использовании IOResult необходимо установить директиву игнорирования ошибок ввода/вывода (I/O-checking)

{$I-} или в Delphi {$IOChecks off}

а затем вновь ее переключить

{$I+} или в Delphi {$IOChecks on}

1

var

Vf: file of Byte; begin

AssignFile(Vf, 'myfile.txt');

{$I-} Reset(Vf);

if IOResult<>0

then

MessageDlg('Ошибка открытия файла', mtError, [mbOk], 0);

{$I+}

...

end;

2

Нетипизированные, или бестиповые файлы

Бестиповые файлы применяются для

быстрой работы с данными на физическом уровне в соответствии с их внутренним форматом.

Объявление файловой переменной:

var f: file;

3

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

procedure Reset(F, Size);

procedure Rewrite(F, Size);

Параметр Size определяет размер пересылаемого элемента информации в байтах

(по умолчанию Size =128)

Универсальное значение Size для физического доступа к любым файлам =1

4

Ввод и вывод

procedure BlockRead(F, Buf, N, Result);

читает из файла N или менее (если достигнут конец файла) компонент и помещает их

в переменную Buf.

Необязательный параметр Result возвращает фактическое количество считанных компонент.

Максимальный размер переносимой информации= N* Size

5

procedure BlockWrite(F, Buf, N, Result);

выводит в файл N или менее (если заполнится диск) компонент из переменной Buf.

Необязательный параметр Result возвращает фактическое количество записанных компонент.

Максимальный размер переносимой информации= N* Size

6

Пример - копирование бестипового файла.

При открытии надо указать размер компоненты в байтах.

Для считывания всего файла его размер должен быть кратен размеру компоненты.

Этому требованию всегда удовлетворяет Size=1

Чтение идет по несколько компонент.

Оптимальный объем информации – 512 байт (объем физ. сектора на диске).

Следовательно, при Size=1, N=512.

7

procedure ………….;

const Size=1;

BufSize=512; var F1, F2: File;

ReadResult, WriteResult: Word; Buf: array[1..BufSize] of char;

begin

8

AssignFile(F1, ‘…’);

 

Reset(F1, Size);

 

AssignFile(F2, ‘…’);

 

Rewrite(F2, Size);

 

repeat

 

BlockRead(F1, Buf, BufSize, ReadResult);

BlockWrite(F2, Buf, ReadResult, WriteResult);

until (ReadResult=0) or (ReadResult <> WriteResult);

if ReadResult=0

 

then MessageDlg(‘OK’,mtInformation, [mbOK], 0)

else MessageDlg(‘диск переполнен’, mtError, [mbOK], 0);

CloseFile(F2);

Для Windows

CloseFile(F1);

приложений

end;

 

 

9

Динамические структуры данных

Общее свойство рассмотренных типов данных (простых, структурированных) :

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

Это - статические данные и структуры данных.

Доступ к статическим переменным осуществляется через их имена.

10

Соседние файлы в папке ЯП