FileSetDate — Функция Delphi
Ниже описываются Delphi функции для работы с файлами. В таблице содержатся практически все Delphi функции для работы с файлами, как создающие, переименовывающие, удаляющие файлы и каталоги, так и Delphi функции поиска файлов, обладающих заданными характеристиками.
procedure AssignFile | Связывает файловую переменную F с именем файла FileName. |
procedure ChDir | Изменяет текущий каталог. Path — переменная, задающая путь к устанавливаемой по умолчанию папке. |
procedure CloseFile | Закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой AssignFile сохраняется. Функции процедуры CloseFile на системном уровне выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы. Если после применения процедуры CloseFile файл нужно открыть повторно, процедуру AssignFile можно не применять, так как связь файловой переменной с файлом не разрывается. |
function DateTimeToFileDate | Преобразует значение переменной DateTime типа TDateTime Delphi в системный формат времени создания (обновления) файла. |
function FileDateToDateTime | Преобразует системный формат времени создания (обновления) файла в формат TDateTime Delphi. |
function DiskFree | Возвращает объём в байтах свободного пространства на указанном диске. Переменная D — номер диска (0 — устройство по умолчанию, текущий диск; 1 — диск А; 2 — диск B; 3 — диск С и т.д.). Функция возвращает значение -1, если указан номер несуществующего диска. |
function DiskSpace | Возвращает объём в байтах полного пространства на указанном диске. Переменная D — номер диска (0 — устройство по умолчанию, текущий диск; 1 — диск А; 2 — диск B; 3 — диск С и т.д.). Функция возвращает значение -1, если указан номер несуществующего диска. |
function EOF | Тестирует конец файла и возвращает True, если файловый указатель стоит в конце файла. При записи это означает, что очередной компонент будет добавлен в конец файла, при чтении — что файл исчерпан. |
procedure Erase | Уничтожает файл F. Перед выполнением процедуры файл должен быть закрыт процедурой CloseFile. |
function FileAge | Для файла FileName возвращает время его последнего обновления (в системном формате) или -1, если такого файла не существует. |
function FileExists | Возвращает True, если файл FileName существует, и False в противном случае. |
function FileGetDate | По заданному дескриптору файла Handle возвращает время и дату его создания (в системном формате). Если дескриптор не существует, возвращает -1. |
function FileSetDate | Возвращает в переменной F типа TSearchRec первый из файлов, зарегистрированных в указанном каталоге. Path: путь поиска с маской выбора файлов; Attr: атрибуты выбираемых файлов. |
function FindNext (var F: TSearchRec): Integer; | Возвращает в переменной F следующий файл в каталоге. Переменная F должна быть предварительно инициирована обращением к функции FindFirst. |
procedure FindClose | Освобождает память, выделенную для поиска файлов функциями FindNext и FindFirst. |
procedure Flush(var F); | Очищает внутренний буфер файла, гарантируя тем самым сохранность всех последних изменений файла на диске. |
procedure GetDir (D: Byte; var S: String); | Возвращает текущий каталог (каталог по умлочанию). D — номер устройства (0: устройство по умолчанию, 1 — диск А, 2 — диск В и т.д.); S — переменная типа String, в которой возвращается путь к текущему каталогу на указанном диске. |
procedure MkDir (Dir: String); | Создаёт новый каталог на текущем диске. Dir — адрес нового каталога, который не может совпадать с именем уже существующего каталога. |
procedure Rename (var F; NewName: String); | Переименовывает, т.е. задаёт новые адрес и имя файла F. NewName — строковое выражение, содержащее новые адрес и имя файла. Перед выполнением процедуры необходимо закрыть файл. |
procedure Reset (var F: File[; RecSize: Word]); | Открывает существующий файл. Переменная RecSize имеет смысл только для нетипизированных файлов и указывает размер блока данных. |
procedure Rewrite (var F: File[; RecSize: Word]); | Создаёт новый файл. Переменная RecSize имеет смысл только для нетипизированных файлов и указывает размер блока данных. |
procedure RmDir (Dir: String); | Удаляет каталог Dir. Удаляемый каталог должен быть пустым, т.е. не содержать файлов или вложенных каталогов. |
function CopyFile (OldName, NewName: AnsiChar; FileExists: Boolean): Boolean; | Копирует файл. Эта функция — не встроенная функция Delphi, а одна из API функций ОС Windows. Возможность работать с ними программа получает после добавления в секцию uses модуля Windows. Параметры функции: OldName — прежние адрес и имя файла; NewName — новые адрес и имя файла; FileExists — переменная, определяющая реакцию на существование файла по новому адресу. При FileExists=False файл будет перезаписан. При FileExists=True функция завершится ошибкой. |
function GetLogicalDrives: Cardinal; | Эта функция — также из состава WinAPI функций. Как и следует из её названия, позволяет получить структуру логических дисков компьютера. Пример её использования смотрите в комментариях к предыдущей страничке, в ответе на вопрос «как определить состав дисков компьютера» |
Работа с файлами В начало урока Работа с дополнительными формами
Одиссей, добавлено 20.08.10, 11:03:29
В таблице отсутствуют функции для записи и чтения файлов! А в остальном очень полезный материал, практически можно научиться работать с файлами, изучив данную таблицу. Автор, добавлено 20.08.10, 11:06:54
В этой таблице содержатся функции управления файлами, а функции записи и чтения можно изучить, читая соответствующие уроки, посвящённые данным вопросам. А эта страничка даже не урок, а просто справочный материал. Вадим Мошев, добавлено 9.04.12, 15:31:27
Здравствуйте. У вас, наверное, описка?
Написано function Erase (var F);
и описание: Уничтожает файл F. Перед выполнением процедуры файл должен быть закрыт процедурой CloseFile.
Наверное, вы хотели написать не function, а Procedure?
То есть, Procedure Erase (var F). Андрей, добавлено 9.04.12, 15:54:27
Вадим, спасибо за внимательность! Сейчас исправлю.
FileSetDate — Функция Delphi
Version 1 of this function takes a FileHandle parameter to indicate the file. This requires use of the FileOpen function, which is one of the low level file handling routines in Delphi.
Version 2 of this function takes a FileName parameter to define the file.
The file is searched for in the current directory.
The second parameter, FileAge is an Integer date/time representation that is used to change the last modified date/time of the file.
Типы, функции и процедуры Delphi для работы с файлами.
Содержание:
Процедуры и функции для работы с файлами.
Тип TSearchRec.
Тип TWin32FindData.
Процедуры и функции для работы с файлами
Ниже приведена таблица, содержащая стандартные процедуры и функции Delphi7 для работы с файлами и их краткое описание. Функции в таблице расположены в алфавитном порядке.
Наименование | Тип модуль | Описание | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AssignFile | процедура System |
||||||||||||||||||||||||||||
ChDir | процедура System |
||||||||||||||||||||||||||||
CloseFile | процедура System |
||||||||||||||||||||||||||||
CreateDir | функция SysUtils |
||||||||||||||||||||||||||||
DeleteFile | функция SysUtils |
||||||||||||||||||||||||||||
DirectoryExists | функция SysUtils |
||||||||||||||||||||||||||||
DiskFree | функция SysUtils |
||||||||||||||||||||||||||||
DiskSize | функция SysUtils |
||||||||||||||||||||||||||||
File mode | константы System | Используются для открытия и закрытия дисковых файлов.
const fmClosed = $D7B0; // closed file Эти константы используются в первую очередь в Delphi коде, где поле Mode в TFileRec и TTextRec содержит одно из этих значений. | |||||||||||||||||||||||||||
File open mode | константы SysUtils | Константы режима открытия файла используются для контроля режима доступа к файлу или потоку.
Для Windows:Эти константы используются для конроля режима совместного доступа при открытии файла или потока. TFileStream конструктор имеет параметр Mode в котрый вы можете прописать одну из следующих констант:
| |||||||||||||||||||||||||||
FileAccessRights | пременная | Points to the command-line arguments specified when the application is invoked. Только для Linux. В Windows эта переменная игнорируется. | |||||||||||||||||||||||||||
FileAge | функция SysUtils |
||||||||||||||||||||||||||||
FileClose | процедура SysUtils |
||||||||||||||||||||||||||||
FileCreate | функция SysUtils |
||||||||||||||||||||||||||||
FileDateToDateTime | функция SysUtils |
||||||||||||||||||||||||||||
FileExists | функция SysUtils |
||||||||||||||||||||||||||||
FileGetAttr | функция SysUtils |
||||||||||||||||||||||||||||
FileGetDate | функция SysUtils |
||||||||||||||||||||||||||||
FileIsReadOnly | функция SysUtils |
||||||||||||||||||||||||||||
FileOpen | функция SysUtils |
||||||||||||||||||||||||||||
FileRead | функция SysUtils |
||||||||||||||||||||||||||||
FileSearch | функция SysUtils |
||||||||||||||||||||||||||||
FileSeek | функция SysUtils |
||||||||||||||||||||||||||||
FileSetAttr | функция SysUtils |
||||||||||||||||||||||||||||
FileSetDate | функция SysUtils |
||||||||||||||||||||||||||||
FileSetReadOnly | функция SysUtils |
||||||||||||||||||||||||||||
FileWrite | функция SysUtils |
||||||||||||||||||||||||||||
FindClose | процедура SysUtils |
||||||||||||||||||||||||||||
FindFirst | функция SysUtils |
||||||||||||||||||||||||||||
FindNext | функция SysUtils |
||||||||||||||||||||||||||||
ForceDirectories | функция SysUtils |
||||||||||||||||||||||||||||
GetCurrentDir | функция SysUtils |
||||||||||||||||||||||||||||
GetDir | процедура System |
||||||||||||||||||||||||||||
RemoveDir | функция SysUtils |
||||||||||||||||||||||||||||
RenameFile | функция SysUtils |
||||||||||||||||||||||||||||
SetCurrentDir | функция SysUtils |
Константа | Значение | Описание |
---|---|---|
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:
Time содержит время последнего изменения файла. Оно может быть преобразовано в формат TDateTime при помощи функции FileDateToDateTime.
Size содержит размер файла в байтах.
Name содержит короткое имя файла с расширением.
FindHandle is an internal handle used to track find state.
FindData (только для Windows) содержит дополнительную информацию, такую как время создания файла, время последнего доступа, а так же длинное и короткое имя файла. См. тип TWin32FindData.
FileSetDate — Функция Delphi
Увжаемые программисты! Объясните, пожалуйста, почему не работает следующая процедура по установке времени создания файла — вроде бы писалась строго по справке. Заранее спасибо!
Procedure SetFileDateEx(FileName:String; fFileDate:TDateTime);
Var
F:Cardinal;
FileTime: TFileTime;
SystemTime: TSystemTime;
Begin
If FileExists(FileName) Then
Begin
F:=FileOpen(FileName,GENERIC_WRITE);
DateTimeToSystemTime(fFileDate,SystemTime);
SystemTimeToFileTime(SystemTime,FileTime);
SetFileTime(F,@FileTime,nil,nil);
FileClose(F);
ZeroMemory(@FileTime,SizeOf(@FileTime));
End
Else
MessageBoxEx(0,»Файл по указанному адресу не найден»,»Ошибка»,MB_IconError,0);
End;
А GetLastError не пробовали ?
>Игорь Шевченко Благодарю Вас за то, что Вы откликнулись на мой вопрос. Но к сожалению, я не умею использовать результат GetLastError.
Если вызвать GetLastError сразу же после вызова процедуры SetFileDateEx, то возвращаемое значение равно 5-ти. Что это означает?
К этому файлу у вас нет доступа (скорее всего, это происходит не после SetFileTime, а после FileOpen)
А писать надо так:
if NOT SetFileTime(F,@FileTime,nil,nil) then
RaiseLastWin32Error;
Но чем это можно объяснить? Например, я создаю файл D:\1.txt и хочу изменить дату его создания, вызвав процедуру:
Чем может быть обусловлена такая ошибка в этом случае?
Попробуйте Сначала закрыть файл, а уже потом изменить его дату
>я не умею использовать результат GetLastError
SysErrorMessage(GetLastError)
Если вопрос стоит тольок в том, чтобы обьяснить — на мой взгляд, проблема в этом параметре GENERIC_WRITE при открытии файла. Скорее всего, если поставить просто fmOpenWrite, то всё будет работать. Однако, мне также неясно зачем использовать столько перекодировок из формата в формат? В общем-то, по-моуму, можно написать и проще, хотя бы так:
F:=FileOpen(FileName,fmOpenWrite);
If FileSetDate(f, DateTimeToFileDate(fFileDate)) <> 0 then Showmessage(«Ошибка!»);
FileClose(F);
Хочу ещё раз поблагодарить всех тех, кто откликнулся на мой вопрос!
>Cobalt Если делать именно так, то возвращается ошибка «Неверный дескриптор». Но всё равно, спасибо за помощь!
Но я никак не могу понять, почему постоянно отказано в доступе абсолютно к любому файлу именно при вызове SetFileTime. К сожалению, замена Generic_Write на fmOpenWrite ни к чему не привела..
Функция FileSetDate представляет собой функцию Delphi и сама использует функцию SetFileTime, т. е. если работает она, то и другая обязана работать. На самом деле, на мой взгляд, проще использовать уже готовую функцию, чем придумывать новую. Другое дело, что SetFileTime позволяет изменять то, что первая не может изначально (при желании можно исправить).
Насчёт Generic_Write и fmOpenWrite. Да, в помощи действительно сказано, что файл должен обязательно открыт с доступом GENERIC_WRITE, но там не сказано, что параметр fmOpenWrite функции FileOpen автоматически подразумевает открытие с таким доступом. А вот указание GENERIC_WRITE непосредственно не передаёт этот параметр функции API, которая и открывает на самом деле файл. Просто несовпадение помощи по функциям API и собственно Delphi.
Но вот последняя часть — лично у меня простая замена лишает все проблемы. Если этого не происходит, то это уже проблема чего-то другого. Например, несовпадение версий.
Да проблемы, возможно, это и решает — ошибок не возникает, но ведь и даты не изменяются!
Начнём с того, какой именно параметр тебе надо изменить?
При написании SetFileTime(F,@FileTime,@FileTime,@FileTime) изменяются время создания и время изменения. Время последнего доступа, естественно, устанавливается на текущий момент (т. к. ,собственно, сама процедура доступ и осуществляет). Так что именно она не меняет? Первый параметр отвечает за время создания файла, которое вполне корректно меняется, что и отображается в свойствах файла. Кстати, а где ты смотришь изменения?
Меня интересует изменение времени создания файла. Я вызываю
SetFileTime(F,@FileTime,nil,nil) и далее смотрю, внесены ли
изменения либо непосредственно в Windows, либо вызовом
функции FileAge. Ни то, ни другое не отображает никаких
изменений. Может, дело в операционной системе? Моя — WinXP.
Я во всём разобрался и ещё раз хочу сказать всем СПАСИБО!
Delphi FileSetDate ошибочен
Я хочу изменить обновленную дату файла. Поэтому для этого я использую следующий код.
Интересно, что даты не совпадают с обоими файлами.
Если я использую устаревший метод FileAge он отлично работает
File1 date: 24-05-2020 11:34:36|| File2 date: 24-05-2020 11:34:36
Со временем я собрал некоторые функции в некоторых единицах из www. (Я не помню, изменил ли я некоторые из них).
Возможно, это могло бы помочь случайному (я использовал это для изменения «Блокнот Puvananthiran delphi» для обновления файла, загруженного в соответствии с последней датой изменения).
Вывести и изменить дату создания или изменения файла
Как изменить дату создания/изменения файла
Как изменить дату создания/изменения файла (желательно приведите фрагмент кода)?
Как узнать время и дату создания файла?
Как узнать время и дату создания файла
Как узнать дату и время создания графического файла?
подскажите пожалуйста как сверить время и дату создания графического файла? точнее сверить я могу я.
Вывести название файла, дату его создания и автора
Через ListView вывожу содержимое папки. Необходимо выводить название файлов, дату создания и.
От текущей даты вычесть дату создания файла
Добрый день. Нужно создать программу, в которой открываются файлы. И нужно сделать что то ввиде.
Предупреждение Delphi — W1002 Символ ‘FileSetDate’ является специфическим для платформы
Когда я компилирую свое приложение под Delphi 2006, я получаю следующее предупреждение [Предупреждение Паскаля] — W1002 Символ ‘FileSetDate’ относится к платформе
Что я должен сделать, чтобы подавить это предупреждение?
3 ответа
Хотя ответ DR устраняет предупреждение, оно не является правильным решением.
Вы должны использовать независимую от платформы версию FileSetDate:
Также в SysUtils.
1) В опциях проекта вы можете выбрать сообщения компилятора, которые вы хотите видеть. Если вас не волнует независимость от платформы, вы можете просто отключить предупреждение о платформе.
2) Другой способ — отключить предупреждение для определенной части кода:
Полный список параметров приведен в справочном файле Delphi в разделе ‘$ WARN’
3) Последний способ — добавить
но это опасно, потому что все предупреждения будут подавлены.
4) Кроме того, как уже предлагалось в других ответах, вы можете просто переключиться на независимый от платформы вариант FileSetDate , который работает с именами файлов (т.е. строками), но, насколько я понимаю, это был не ваш вопрос.
FileSetDate Routine
Description
(Please provide a description in your own words. It is illegal to use the wording from the Delphi Help.)
Technical Comments
(Known issues / Documentation clarifications / Things to be aware of)
Examples
(Please provide links to articles/source code that show how to use this item.)
See Also
(Please provide links to items specifically related to this item.)
User Comments/Tips
(Please leave your name with your comment.)
FileSetDate — Функция Delphi
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
|
Регистрация
Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда — alarforum@yandex.ru
пример в студию, самому интересно. щас ищу upd-2
|