Программа на DelphiРефераты >> Программирование и компьютеры >> Программа на 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. Процедуры и функции для работы с файлами
Эти подпрограммы предназначены для работы с файлами, папками (директориями) и дисками.
- Procedure ChDir(Dir: String);
Делает папку Dir текущей. Пример: ChDir('c:\');
- Procedure GetDir(D: Byte; Var Dir: String);
Возвращает текущую папку на заданном устройстве. (D= 0 – текущий диск, 1 – диск А, 2 – диск B и т.д.). Пример: GetDir(0, s);
- Procedure RmDir(Dir: String);
Уничтожает заданную папку. Папка не должна содержать вложенных папок или файлов. Пример: RmDir('Folder66');
- Procedure Erase(f);
Удаляет файл, связанный с файловой переменной f. Файл должен быть закрыт.
- Procedure Rename(f, FileName: String);
Переименовывает файл, связанный с файловой переменной f. Файл должен быть закрыт. Пример: Rename(g, 'studs.txt');
- Function DiskFree(D: byte): LongInt;
Возвращает количество свободной памяти в байтах на устройстве D. Код драйвера задается так же, как в процедуре GetDir. Если код указан неверно, то возвращает -1.
- Function DiskSize(D: byte): LongInt;
Возвращает количество свободной памяти в байтах на устройстве D. Код драйвера задается так же, как в процедуре GetDir. Если код указан неверно, то возвращает -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 байтов'.
- Function FindNext(var F: TSearchRec): Integer;
Находит следующий файл, атрибуты которого указаны в FindFirst.
- Procedure FindClose(var F: TSearchRec);
Закрывает действие FindFirst/FindNext.
- Function DeleteFile(const FileName: string): Boolean;
Удаляет файл по имени. Если файл не может быть удален или не существует – возвращает False.
- Function CreateDir(const Dir: string): Boolean;
Создает новую папку.
- Function GetCurrentDir: string;
Возвращает текущую папку.
- Function GetCurrentDir: string;
Возвращает текущую папку.
- Function SetCurrentDir(const Dir: string): Boolean;
Установка новой текущей папки.
- Function RemoveDir(const Dir: string): Boolean;
Удаление папки. Перед удалением папка должна быть пустой.
- Function ExtractFileDir(const FileName: string): string;
Выделяет из полного имени файла FileName папку, в которой содержится это файл.
- Function ExtractFilePath(const FileName: string): string;
Выделяет из полного имени файла FileName путь до файла.
- Function ExtractFileExt(const FileName: string): string;
Возвращает расширение файла FileName.
- Function ExtractFileName(const FileName: string): string;
Возвращает имя файла FileName (без расширения).
- Function DirectoryExists(Dir: string): boolean;
Проверяет существование директории. Пример:
if DirectoryExists('C:\APPS\SALES\LOCAL') then ;
- Function FileExists(FileName: string): boolean;
Проверяет существование файла. Примеры:
B:= FileExists('C:\APPS\SALES\LOCAL\Fort.pas'); {полное имя}
B:= FileExists('Fort.pas'); {указано усеченное имя файла, проверка его существования только в текущей директории}
- Procedure ForceDirectories(Dir: string);