На главную

Типы, функции и процедуры Delphi для работы с файлами.

Содержание:

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

  2. Тип TSearchRec.

  3. Тип TWin32FindData.

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

Ниже приведена таблица, содержащая стандартные процедуры и функции Delphi7 для работы с файлами и их краткое описание. Функции в таблице расположены в алфавитном порядке.

Наименование Тип
модуль
Описание
AssignFile процедура
System

Связывает имя внешнего дискового файла с файловой переменной.

procedure AssignFile(var F; FileName: string);

F - имя файловой переменной
FileName - имя файла

ChDir процедура
System

Изменяет текущую директорию.

procedure ChDir(const S: string); overload;
procedure ChDir(P: PChar); overload;

CloseFile процедура
System

Разрывает связь между файловой переменной и внешним дисковым файлом.

procedure CloseFile(var F);

CreateDir функция
SysUtils

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

function CreateDir(const Dir: string): Boolean;

DeleteFile функция
SysUtils

Удаляет файл с диска.

function DeleteFile(const FileName: string): Boolean;

DirectoryExists функция
SysUtils

Определяет существует ли указанная директория.

function DirectoryExists(const Directory: string): Boolean;

DiskFree функция
SysUtils

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

function DiskFree(Drive: Byte): Int64;

Drive - номер диска, где 0 = текущий диск, 1 = A, 2 = B ... и т.д.

DiskSize функция
SysUtils

Возвращает размер указанного диска в байтах.

function DiskSize(Drive: Byte): Int64;

Drive - номер диска, где 0 = текущий диск, 1 = A, 2 = B ... и т.д.

File mode константы
System
Используются для открытия и закрытия дисковых файлов.

const fmClosed = $D7B0; // closed file
const fmInput = $D7B1; // reset file (TTextRec)
const fmOutput = $D7B2; // rewritten file (TTextRec)
const fmInOut = $D7B3; // reset or rewritten file (TFileRec)
const fmCRLF = $8; // DOS-style EoL and EoF markers (TTextRec)
const fmMask = $D7B3; // mask out fmCRLF flag (TTextRec)

Эти константы используются в первую очередь в Delphi коде, где поле Mode в TFileRec и TTextRec содержит одно из этих значений.
File open mode константы
SysUtils
Константы режима открытия файла используются для контроля режима доступа к файлу или потоку.

Для Windows:

  const

    fmCreate         = $FFFF;
    fmOpenRead       = $0000;
    fmOpenWrite      = $0001;
    fmOpenReadWrite  = $0002;

    fmShareCompat    = $0000 platform;
    fmShareExclusive = $0010;
    fmShareDenyWrite = $0020;
    fmShareDenyRead  = $0030 platform;
    fmShareDenyNone  = $0040;

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

TFileStream конструктор имеет параметр Mode в котрый вы можете прописать одну из следующих констант:

Константа
Описание
fmCreate Если файл уже существует, то он открывается для записи, иначе создается новый файл. В отличие от других констант, которые декларируются в модуле SysUtil, эта константа декларируется в модуле classes.
fmOpenRead Открываетдоступ только для чтения.
fmOpenWrite Открываетдоступ только для записи.
fmOpenReadWrite Открывает доступ для чтения и записи.
fmShareCompat Compatible with the way FCBs are opened. Не используйте этот режим в кросс-платформенных приложениях.
fmShareExclusive Доступ к чтению и записи запрещен.
fmShareDenyWrite Доступ для записи запрещен.
fmShareDenyRead Доступ для чтения запрещен. Не используйте этот режим в кросс-платформенных приложениях.
fmShareDenyNone Открывает полный доступ для других.
FileAccessRights пременная Points to the command-line arguments specified when the application is invoked. Только для Linux. В Windows эта переменная игнорируется.
FileAge функция
SysUtils

Возвращает время последней модификации файла (timestamp) в формате операционной системы. Полученное значение может быть преобразовано в формат TDateTime при помощи функции FileDateToDateTime.

function FileAge(const FileName: string): Integer;

FileClose процедура
SysUtils

Закрывает указанный файл.

procedure FileClose(Handle: Integer);

FileCreate функция
SysUtils

Создает новый файл.

function FileCreate(const FileName: string): Integer; overload;
function FileCreate(const FileName: string; Rights: Integer): Integer; overload;

Если возвращаемое значение больше 0 функция выполнена успешно и его значение соответствует handle открытого файла. -1 - произошла ошибка открытия файла.
Параметр Rights используется только для Linux. В Windows он игнорируется.

FileDateToDateTime функция
SysUtils

Преобразует значение времени файла (timestamp) из формата операционной системы в TDateTime.

function FileDateToDateTime(FileDate: Integer): TDateTime;

FileExists функция
SysUtils

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

function FileExists(const FileName: string): Boolean;

FileGetAttr функция
SysUtils

Возвращает файловые аттрибуты заданного файла как строку бит. Возвращаемое значение полностью соответствует полю Attr в TSearchRec..

function FileGetAttr(const FileName: string): Integer;

FileGetDate функция
SysUtils

Возвращает время последней модификации файла (timestamp) в формате операционной системы. Используйте её для файла, заданного его handle.

function FileGetDate(Handle: Integer): Integer;

FileIsReadOnly функция
SysUtils

Возвращает TRUE если файл можно открыть только для чтения.

function FileIsReadOnly(const FileName: string): Boolean;

FileOpen функция
SysUtils

Открывает указанный файл в режиме, заданном при помощи одной из констант File open mode.

function FileOpen(const FileName: string; Mode: LongWord): Integer;

Если возвращаемое значение больше 0 функция выполнена успешно и его значение соответствует handle открытого файла. -1 - произошла ошибка открытия файла.

FileRead функция
SysUtils

Читает указанное число байт из файла в буфер. Перед этим файл должен быть открыт при помощи функции FileOpen или FileCreate.

function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;

Handle - хендл файла, возвращаемый функциями FileCreate или FileOpen
Buffer - буфер
Count - размер буфера

Возвращаемое значение - действительное количество полученных байт. Оно может быть меньше размера буфера.

FileSearch функция
SysUtils

Ищет файл в указанных папках.

function FileSearch(const Name, DirList: string): string;

Name - короткое имя файла
DirList - список директорий для поиска. Для Windows директории для поиска в списке отделяются друг от друга точкой с запятой, а в Linux - двоеточием.

Возвращаемое значение - полное имя файла. Если файл не найден - пустая строка.

FileSeek функция
SysUtils

Перепозиционирует позицию чтения/записи в открытом файле. Перед этим файл должен быть открыт при помощи функции FileOpen или FileCreate.

function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64;overload;

Handle - хендл файла, возвращаемый функциями FileCreate или FileOpen
Offset - указывает число байт смещения от Origin, куда будет перепозизиционирована точка.
Origin - определяет три варианта позиционирования:
0 - смещение задается относительно начала файла;
1 - смещение задается относительно текущей позиции;
2 - смещение задается относительно конца файла.

Если FileSeek выполнена успешно, она возвращает новую позицию точки чтения/записи; иначе она возвращает -1.

FileSetAttr функция
SysUtils

Устанавливает файловые аттрибуты заданного файла.

function FileSetAttr(const FileName: string; Attr: Integer): Integer;

Значение Attr формируется комбинацией соответствующих констант файловых аттрибутов как показано ниже:

FileSetAttr('MyFile.sys', faReadOnly or faSysFile);

Возвращаемое значение - 0; иначе - код ошибки.

Примечание: Значения констант файловых аттрибутов приведены в описании TSearchRec.

Примечание: FileSetAttr доступна только для Windows.

FileSetDate функция
SysUtils

Устанавливаетвремя последней модификации файла (timestamp) в формате операционной системы.

Для Windows:
function FileSetDate(Handle: Integer; Age: Integer): Integer; overload;

Cross-platform:
function FileSetDate(const FileName: string; Age: Integer): Integer; overload;

Handle - handle файла для изменения (Этот синтаксис доступен только для Windows.);
FileName - имя файла;
Age - устанавливаемое время модификации в формате операционной системы. Используйте функцию DateTimeToFileDate для перевод времени из формата TDateTime в формат операционной системы.

Возвращаемое значение - 0; иначе - код ошибки.

FileSetReadOnly функция
SysUtils

Разрешает использовать файл только для чтения.

function FileSetReadOnly(const FileName: string; ReadOnly: Boolean): Boolean;

FileWrite функция
SysUtils

Записывает содержимое буфера в текущую позицию в файле.

function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;

Handle - хендл файла, возвращаемый функциями FileCreate или FileOpen
Buffer - буфер
Count - число байт, передаваемых файлу из буфера

Возвращаемое значение - действительное количество записаных байт или -1 в случае ошибки.

FindClose процедура
SysUtils

Освобождает память, выделенную под функцию FindFirst и прерывает последовательность FindFirst/FindNext.

procedure FindClose(var F: TSearchRec);

FindFirst функция
SysUtils

Ищет первый файл с заданными аттрибутами в указанной папке.

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

Path - имя папки и маска имен файлов для поиска, включая wildcard characters. (Например, '.\test\*.*' задает все файлы в текущей папке.)
Attr - аттрибут, указывающий включать в поиск специальные файлы в дополнение к нормальным. Аттрибуты можно комбинировать, складывая значения. Например, (faReadOnly + faHidden).
F - возвращаемый параметр. Результат работы функции.

Возвращаемое значение - 0, если файл найден; иначе - код ошибки.

FindNext функция
SysUtils

Возвращает имя следующего файла с параметрами, предварительно заданными функцией FindFirst.

function FindNext(var F: TSearchRec): Integer;

F - возвращаемый параметр. Результат работы функции.

Возвращаемое значение - 0, если файл найден; иначе - код ошибки.

ForceDirectories функция
SysUtils

Создает новую папку, включая родительские папки, если они до этого не существовали, и родительские папки.

function ForceDirectories(Dir: string): Boolean;

GetCurrentDir функция
SysUtils

Возвращает полное имя рабочей папки.

function GetCurrentDir: string;

GetDir процедура
System

Возвращает имя рабочей папки.

procedure GetDir(D: Byte; var S: string);

D - номер диска, где 0 = текущий диск, 1 = A, 2 = B, 3 = C ... и т.д.
S - возвращаемый параметр. Результат работы процедуры.

RemoveDir функция
SysUtils

Удаляет существующую пустую папку.

function RemoveDir(const Dir: string): Boolean;

RenameFile функция
SysUtils

Изменяет имя файла.

function RenameFile(const OldName, NewName: string): Boolean

SetCurrentDir функция
SysUtils

Назначает рабочую папку.

function SetCurrentDir(const Dir: string): Boolean;





Тип TSearchRec

TSearchRec содержит информацию о файле, найденом при помощи функции FindFirst или FindNext.

Модуль

SysUtils


Для Windows:

  type TSearchRec = record    
    Time: Integer;    
    Size: Integer;    
    Attr: Integer;    
    Name: TFileName;        
    ExcludeAttr: Integer;    
    FindHandle: THandle;     
    FindData: TWin32FindData;   
  end;

Описание

Тип TSearchRec определяет информацию о файле, найденую путем вызова функции FindFirst или FindNext. Если файл найлен, поля параметров TSearchRec изменяются в соответствии с найденным файлом.

Attr - представляет файловые аттрибуты файла. Проверяйте параметр Attr на следующие константы аттрибутов или их значения чтобы узнать какие аттрибуты назначены данному файлу.

В Windows константы аттрибутов полностью соответствуют файловым аттрибутам DOS.

Константа
Значение
Описание
faReadOnly 1 Файлы Только для чтения
faHidden 2 Скрытые файлы
faSysFile 4 Системные файлы
faVolumeID 8 Файлы идентификации тома
faDirectory 16 Файлы папок
aArchive 32 Архивные файлы
faSymLink 64 Символьная ссылка
faAnyFile 71 Любые файлы

Примечание:
Константа faReadOnly из модуля SysUtils имеет то же самое имя, что и константа из модуля Db, определенная в типе TFieldAttribute. Если в своих исходниках вы одновременно используете модули SysUtils и Db, то, чтобы исключить неопределенность, необходимо конкретно указывать из какого модуля вы используете значение константы faReadOnly. В Delphi это записывается так: SysUtils.faReadOnly.

Чтобы проверить файл на определенный аттрибут, комбинируйте значение поля Attr с соотвтствующей константой при помощи оператора AND. Если файл имеет этот аттрибут, результат будет больше 0. Например, если найденый файл является скрытым, то следующие выражения дадут значение TRUE:

Код:
 (SearchRec.Attr and faHidden) <> 0.
 (SearchRec.Attr & faHidden) != 0.

Time содержит время последнего изменения файла. Оно может быть преобразовано в формат TDateTime при помощи функции FileDateToDateTime.

Size содержит размер файла в байтах.

Name содержит короткое имя файла с расширением.

FindHandle is an internal handle used to track find state.

FindData (только для Windows) содержит дополнительную информацию, такую как время создания файла, время последнего доступа, а так же длинное и короткое имя файла. См. тип TWin32FindData.




Платонов А.Н.
15.04.2009


Список литературы:

  1. Delphi 7 Help
  2. Delphi 7 Win32 Programmer's Reference
  3. Delphi 7 Windows.pas

Коментарии:

Ваше имя:
Коментарий:


 



Hosted by uCoz