Программа на Delphi

End {If };

End {StudsCopy};

Операторы, реализующие копирование требуемых данных в файл '1979.bs':

StudsCopy ('AllStuds.bs', '1979.bs', 1979, Count1979, Ind1979);

Case Ind1979 of -1: Writeln('Зафиксирована ошибка чтения'); 1: Writeln('Зафиксирована ошибка записи'); 0: Writeln('Процесс прошел нормально'); end; {Case}

Writeln('Скопировано записей: ' + IntToStr(Count1979));

В этом примере использована внешняя процедура KdnFileSize {количество записей в файле }. Приведем ее текст:

function KdnFileSize(nF: ShortString, Siz: Word): LongInt; {nF – имя файла, Siz – размер одной записи }

Var

F: File; L: LongInt;

Begin L:=0;

If FileExists(nF) then begin Assign(f, nF); Reset(f,1); L:= SizeOf(f); If not (L mod Siz = 0) then Writeln('Файл ' + nF + имеет другой тип'); L:= L div Siz; CloseFile(f); End;

Result:= L; End;

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

Эти подпрограммы предназначены для работы с файлами, папками (директориями) и дисками.

  1. Procedure ChDir(Dir: String);

Делает папку Dir текущей. Пример: ChDir('c:\');

  1. Procedure GetDir(D: Byte; Var Dir: String);

Возвращает текущую папку на заданном устройстве. (D= 0 – текущий диск, 1 – диск А, 2 – диск B и т.д.). Пример: GetDir(0, s);

  1. Procedure RmDir(Dir: String);

Уничтожает заданную папку. Папка не должна содержать вложенных папок или файлов. Пример: RmDir('Folder66');

  1. Procedure Erase(f);

Удаляет файл, связанный с файловой переменной f. Файл должен быть закрыт.

  1. Procedure Rename(f, FileName: String);

Переименовывает файл, связанный с файловой переменной f. Файл должен быть закрыт. Пример: Rename(g, 'studs.txt');

  1. Function DiskFree(D: byte): LongInt;

Возвращает количество свободной памяти в байтах на устройстве D. Код драйвера задается так же, как в процедуре GetDir. Если код указан неверно, то возвращает -1.

  1. Function DiskSize(D: byte): LongInt;

Возвращает количество свободной памяти в байтах на устройстве D. Код драйвера задается так же, как в процедуре GetDir. Если код указан неверно, то возвращает -1.

  1. Function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

Находит имя первого файла с заданными атрибутами Attr в папке Path. Результат поиска выводит в переменную F. Если поиск успешен, то функция вернет 0, иначе вернет код ошибки Widows. К FindFirst можно обращаться не только как к функции, но и как к процедуре.

Атрибуты файла приведены в табл. 17.

Таблица 17

Атрибут

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

faReadOnly

faHidden

faSysFile

faVolumeID

faDirectory

faArchive

faAnyFile

Файлы "Только для чтения"

Скрытые файлы

Системные файлы

Файл ID-значений

Папки (директории)

Архивы (файлы)

Все файлы

Тип, характеризующий найденный файл, представляет запись вида :

type

TSearchRec = Record Time: Integer; {время} Size: Integer; {размер файла в байтах} Attr: Integer; {атрибуты файла} Name: TFileName; {DOS-путь файла} ExcludeAttr: Integer; FindHandle: THandle; FindData: TWin32FindData; {дополнительная информация о файле} end;

Пример:

Var

SR: TSearchRec; S: String; … FindFirst('c:\Program Files\delphi4\bin\*.*', faAnyFile, SR); if (SR.Attr = faArchive) then S:= 'Файл ' + SR.Name + ' имеет размер ' + IntToStr(SR.Size) + ' байт';

В данном примере процедура FindFirst ищет первый файл по маске '*.*' (все файлы) в папке 'c:\Program Files\delphi4\bin'. Атрибут faAnyFile означает, что поиск производится по всем видам файлов, под которыми понимаются папки (директории), '.', ' ' – ссылки на текущую и родительскую папку, внутренние папки и собственно файлы. Последние в терминологии файловой атрибутики называются архивами. Далее, если найденный файл есть архив, т е. файл в общепринятой терминологии, то в строку S будет помещено сообщение. Например, если найденный файл имеет имя Ig.ttg и его размер равен 15899, то S= 'Файл Ig.ttg имеет размер 15889 байтов'.

  1. Function FindNext(var F: TSearchRec): Integer;

Находит следующий файл, атрибуты которого указаны в FindFirst.

  1. Procedure FindClose(var F: TSearchRec);

Закрывает действие FindFirst/FindNext.

  1. Function DeleteFile(const FileName: string): Boolean;

Удаляет файл по имени. Если файл не может быть удален или не существует – возвращает False.

  1. Function CreateDir(const Dir: string): Boolean;

Создает новую папку.

  1. Function GetCurrentDir: string;

Возвращает текущую папку.

  1. Function GetCurrentDir: string;

Возвращает текущую папку.

  1. Function SetCurrentDir(const Dir: string): Boolean;

Установка новой текущей папки.

  1. Function RemoveDir(const Dir: string): Boolean;

Удаление папки. Перед удалением папка должна быть пустой.

  1. Function ExtractFileDir(const FileName: string): string;

Выделяет из полного имени файла FileName папку, в которой содержится это файл.

  1. Function ExtractFilePath(const FileName: string): string;

Выделяет из полного имени файла FileName путь до файла.

  1. Function ExtractFileExt(const FileName: string): string;

Возвращает расширение файла FileName.

  1. Function ExtractFileName(const FileName: string): string;

Возвращает имя файла FileName (без расширения).

  1. Function DirectoryExists(Dir: string): boolean;

Проверяет существование директории. Пример:

if DirectoryExists('C:\APPS\SALES\LOCAL') then ;

  1. Function FileExists(FileName: string): boolean;

Проверяет существование файла. Примеры:

B:= FileExists('C:\APPS\SALES\LOCAL\Fort.pas'); {полное имя}

B:= FileExists('Fort.pas'); {указано усеченное имя файла, проверка его существования только в текущей директории}

  1. Procedure ForceDirectories(Dir: string);


Страница: