Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа N10.doc
Скачиваний:
3
Добавлен:
08.09.2019
Размер:
208.9 Кб
Скачать

2.5 Закрытие файла

После выполнения операций чтения-записи файл необходимо закрыть. Для этого можно воспользоваться процедурой СloseFile:

CloseFile(f);

2.6 Дополнительные функции и процедуры

Erase(f) - удаляет файл FilePos(f) - возвращает текущую позицию чтения/записи в файл Rename(f, 'MyNewFileName.txt') - переименование файлов Truncate(f) - файл обрезается до текущей позиции чтения/записи

2.7 Пример работы с нетипизированным файлом

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

Создайте форму по образцу:

Обработка события нажатия на кнопку «Копировать файл должна содержать следующий код»:

procedure TForm1.Button1Click(Sender: TObject);

var

fFrom, fTo : File; //нетипизированные файл-источник, и файл-копия

colRead, colWrite : Integer; //количество прочитанных и записанных байт

buf : array [1..2048] of Char; //буфер символов для копируемого текста

filename : string; //переменная с адресом и именем файла

begin

//если нет адреса, куда копировать, то выходим

if Edit1.Text = '' then begin

ShowMessage('Укажите папку, куда нужно копировать файл!');

Edit1.SetFocus;

Exit;

end; //if

//если не выбрали файл, то выходим

if not OpenDialog1.Execute then Exit;

//смотрим адрес и имя файла:

filename := OpenDialog1.FileName;

try

//связываем переменные с файлами:

AssignFile(fFrom, filename); //откуда

AssignFile(fTo, Edit1.Text+'\'+ExtractFileName(filename)); //куда

//открываем файл для чтения:

Reset(fFrom, 1);

//открываем файл для записи:

Rewrite(fTo, 1);

//обнуляем переменные

colRead := 0;

colWrite := 0;

//копируем, пока не наступит конец файла:

while colRead = colWrite do begin

BlockRead(fFrom, buf, SizeOf(buf), colRead);

if colRead = 0 then break;

BlockWrite(fTo, buf, colRead, colWrite);

end; //while

finally

//закрываем файлы

CloseFile(fFrom);

CloseFile(fTo);

ShowMessage('Файл скопирован!');

end; //try

end;

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

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

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

3.1 Объявление

Пример объявления файла целых чисел:

f: file of integer;

3.2 Связывание переменной с файлом

Ассоциируем файловую переменную с физическим файлом:

AssignFile(f,'c:\myfile.bin');

3.3 Открытие файла

При работе с файлами мы можем либо перезаписать/создать файл:

Rewrite(f);

Либо открыть существующий для чтения и записи:

Reset(f);

Обратите внимание, что функция Reset хотя и имеет такой же формат как и для текстовых файлов, но открытый ей файл можно и читать и писать, в отличие от текстовых.