Время создания файла...

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Время создания файла...

Сообщение modjo » 19.08.2009 14:45:39

Задам свой вопрос в данной ветке, тут правильней (в лазарус так никто и не ответил).

Не покажете чем можно посмотреть дату создания файла? Как посмотреть время изменения понятно, а как посмотреть время создания и открытия не понятно (в свойстве файла есть, под виндой).
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: Время создания файла...

Сообщение Mr.Smart » 19.08.2009 14:51:31

Вопрос не имеет отношения не к Lazarus и не к FreePascal.
Вам искать надо в MSDN.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Время создания файла...

Сообщение modjo » 19.08.2009 16:11:30

Нда, я слышал что-то но не пользовался .......
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: Время создания файла...

Сообщение Mr.Smart » 19.08.2009 16:38:48

modjo писал(а):Нда, я слышал что-то но не пользовался .......

Этож основная документация на Windows ситстемы тут
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Время создания файла...

Сообщение modjo » 19.08.2009 17:25:57

До сего момента без нее обходился. Пока вот такой вопрос не встал... Ща попробую сориентироваться...
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: Время создания файла...

Сообщение Vadim » 19.08.2009 18:50:20

modjo
GetFileTime(handle, TimeCreate, TimeLastAccess, TimeLastWrite);
все параметры, кроме первого, это указатель на структуру FILETIME.
Если файл открывать не надо, то можно использовать функцию FindFirstFile(FileName, @WIN32_FIND_DATA), из второго параметра тоже можно извлечь все три компонента времени файла.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время создания файла...

Сообщение modjo » 20.08.2009 11:31:46

мммм это надо еще переварить :)

Не подскажите ничего по поводу TWin32FindData? Это тип для finddata в tsearchrec если использовать uses windows. В дельфи он по дефолту идет, а в fpc при uses windows, как я понял из C:\lazarus\fpc\2.2.2\source\rtl\objpas\sysutils\filutilh.inc. Вроде как через finddata как раз и можно узнать нужные значения. Только описания найти не могу.

Добавлено спустя 1 час 11 минут 27 секунд:
Код: Выделить всё
uses
  sysutils, windows;
var
  result : TSearchRec;

function FileTime2DateTime(FileTime: TFileTime): TDateTime;
var
  LocalFileTime: TFileTime;
  SystemTime: TSystemTime;
begin
  FileTimeToLocalFileTime(FileTime, LocalFileTime);
  FileTimeToSystemTime(LocalFileTime, SystemTime);
  FileTime2DateTime := SystemTimeToDateTime(SystemTime);
end;

begin
  if FindFirst('qwertyu.txt',faAnyFile,result)=0 then
    writeLn(DateTimeToStr(FileTime2DateTime(result.finddata.ftCreationTime)));
end.
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: Время создания файла...

Сообщение Vadim » 20.08.2009 13:01:17

modjo
На английском только, других описаний нет. :)
Код: Выделить всё
The WIN32_FIND_DATA structure describes a file found by the FindFirstFile or FindNextFile function.

typedef struct _WIN32_FIND_DATA { // wfd 
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD    nFileSizeHigh;
    DWORD    nFileSizeLow;
    DWORD    dwReserved0;
    DWORD    dwReserved1;
    TCHAR    cFileName[ MAX_PATH ];
    TCHAR    cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;

Members

dwFileAttributes

Specifies the file attributes of the file found. This member can be one or more of the following values:

Value   Meaning
FILE_ATTRIBUTE_ARCHIVE   
The file is an archive file. Applications use this value to mark files for backup or removal.
FILE_ATTRIBUTE_COMPRESSED   
The file or directory is compressed. For a file, this means that all of the data in the file is compressed. For a directory, this means that compression is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_DIRECTORY   
The file is a directory.
FILE_ATTRIBUTE_HIDDEN   
The file is hidden. It is not included in an ordinary directory listing.
FILE_ATTRIBUTE_NORMAL   
The file has no other attributes set. This value is valid only if used alone.
FILE_ATTRIBUTE_OFFLINE   
The data of the file is not immediately available. Indicates that the file data has been physically moved to offline storage.
FILE_ATTRIBUTE_READONLY   
The file is read-only. Applications can read the file but cannot write to it or delete it.
FILE_ATTRIBUTE_SYSTEM   
The file is part of the operating system or is used exclusively by it.
FILE_ATTRIBUTE_TEMPORARY   
The file is being used for temporary storage. Applications should write to the file only if absolutely necessary. Most of the file's data remains in memory without being flushed to the media because the file will soon be deleted.

ftCreationTime

Specifies a FILETIME structure containing the time the file was created. FindFirstFile and FindNextFile report file times in Coordinated Universal Time (UTC) format. These functions set the FILETIME members to zero if the file system containing the file does not support this time member. You can use the FileTimeToLocalFileTime function to convert from UTC to local time, and then use the FileTimeToSystemTime function to convert the local time to a SYSTEMTIME structure containing individual members for the month, day, year, weekday, hour, minute, second, and millisecond.

ftLastAccessTime

Specifies a FILETIME structure containing the time that the file was last accessed. The time is in UTC format; the FILETIME members are zero if the file system does not support this time member.

ftLastWriteTime

Specifies a FILETIME structure containing the time that the file was last written to. The time is in UTC format; the FILETIME members are zero if the file system does not support this time member.

nFileSizeHigh

Specifies the high-order DWORD value of the file size, in bytes. This value is zero unless the file size is greater than MAXDWORD. The size of the file is equal to (nFileSizeHigh * MAXDWORD) + nFileSizeLow.

nFileSizeLow

Specifies the low-order DWORD value of the file size, in bytes.

dwReserved0

Reserved for future use.

dwReserved1

Reserved for future use.

cFileName

A null-terminated string that is the name of the file.

cAlternateFileName

A null-terminated string that is an alternative name for the file. This name is in the classic 8.3 (filename.ext) filename format.

Remarks

If a file has a long filename, the complete name appears in the cFileName field, and the 8.3 format truncated version of the name appears in the cAlternateFileName field. Otherwise, cAlternateFileName is empty. As an alternative, you can use the GetShortPathName function to find the 8.3 format version of a filename.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время создания файла...

Сообщение Dmitry » 20.08.2009 13:24:03

А нельзя ли это вынести в модуль sysutils например?
Ведь время создания, изменения, последнего доступа к файлу присутствует не только на ntfs, а также на UFS, UFS2, ZFS, ext2, ext3, ext4, XFS и других подобных файловых системах.
Dmitry
новенький
 
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Re: Время создания файла...

Сообщение Vadim » 20.08.2009 13:39:07

Dmitry писал(а):А нельзя ли это вынести в модуль sysutils например?

Каким образом? Это функция операционной системы, а не языка программирования. В Linux будет уже совершенно другая функция для этих целей.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время создания файла...

Сообщение Дож » 20.08.2009 14:07:37

Функции чтения/записи в файлы тоже принадлежат операционной системе, но при этом встроены в сам язык.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Время создания файла...

Сообщение modjo » 20.08.2009 14:17:32

FindData - дынные отдает ОС, а не компилятор. В дельфи он по дефолту, так как он изначально для Windows. А fpc кроссплатформенный. Отсюда некоторые различия.
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: Время создания файла...

Сообщение Дож » 20.08.2009 14:27:32

Именно - fpc кроссплатформенный, а это значит, что он сам определяет как работать с файлами на низком уровне. А именно что делать внутри Assign, Rewrite, BlockRead и прочих.

Ничто не мешает с SysUtils поступить так же.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Время создания файла...

Сообщение Mr.Smart » 20.08.2009 14:34:21

Дож
Зачем захломлять RTL редко используемыми функциями?
В разных ОС куча нативных функций с разным синтаксисом, но почти одинаковыми действиями. Если прислушаться к вашим словам, то нужно их все (функции) запихнуть в RTL.
Ладно хорошо запихнём. Вас не будет смущать лишний код который просто приводит возвращаемые данные нативных функций к общему виду. RTL и так "тяжелый". Далее кто будет писать документацию на "нововведённые" функции? Неужели вы?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Время создания файла...

Сообщение modjo » 20.08.2009 15:17:38

Во! TWin32FindData есть, а описание не найдено в доках fpc (google.com -> site:freepascal.org/docs-html/rtl TWin32FindData)
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru