- •Практическая работа 10 Работа с файлами.
- •1 Текстовые файлы
- •1.1 Объявление
- •1.2 Связывание переменной с файлом
- •1.3 Открытие файла
- •1.4 Запись в файл. Чтение из файла
- •1.4.1 Текстовый файл и компонент Memo
- •1.5 Закрытие файла
- •1.6 Пример работы с текстовым файлом
- •2 Нетипизированные файлы
- •2.1 Объявление
- •2.2 Связывание переменной с файлом
- •2.3 Открытие файла
- •2.4 Запись в файл. Чтение из файла
- •2.5 Закрытие файла
- •2.6 Дополнительные функции и процедуры
- •2.7 Пример работы с нетипизированным файлом
- •3 Типизированные файлы
- •3.1 Объявление
- •3.2 Связывание переменной с файлом
- •3.3 Открытие файла
- •3.4 Работа с файлом
- •3.5 Закрытие файла
- •3.6 Пример работы с типизированным файлом
- •4 Ini файлы
- •4.1 Объявление
- •4.2 Создание/подключение
- •4.3 Чтение-запись
- •Ini.WriteInteger('Position', 't', Form1.Top);
- •4.4 Закрытие файла
- •4.5 Пример работы с ini-файлом.
- •5 TFileStream
- •5.1Объявление и инициализация переменной.
- •5.2 Работа с файлом
- •5.3 Закрытие
- •5.4 Пример
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 хотя и имеет такой же формат как и для текстовых файлов, но открытый ей файл можно и читать и писать, в отличие от текстовых.