Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2008, 11:38   #1
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию время и дата изменения файла

Как можно узнать время и дату последнего изменения файла, желательно одним числом, чтоб можно было б сравнить 2 файла?
Функция FileAge не подходит, с нее можно получить время создания файла.
В поиске тоже не нашел...
dimonbest вне форума Ответить с цитированием
Старый 11.03.2008, 11:54   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

http://msdn2.microsoft.com/en-us/lib...20(VS.85).aspx
Код:
BOOL GetFileTime(
  HANDLE hFile,
  LPFILETIME lpCreationTime,
  LPFILETIME lpLastAccessTime,
  LPFILETIME lpLastWriteTime
);
Код:
typedef struct _FILETIME {
  DWORD dwLowDateTime;
  DWORD dwHighDateTime;
} FILETIME, *PFILETIME;
Код:
BOOL FileTimeToSystemTime(
  const FILETIME* lpFileTime,
  LPSYSTEMTIME lpSystemTime
);
Код:
typedef struct _SYSTEMTIME {
  WORD wYear;
  WORD wMonth;
  WORD wDayOfWeek;
  WORD wDay;
  WORD wHour;
  WORD wMinute;
  WORD wSecond;
  WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
Код:
BOOL SystemTimeToFileTime(
  const SYSTEMTIME* lpSystemTime,
  LPFILETIME lpFileTime
);
Код:
BOOL FileTimeToLocalFileTime(
  const FILETIME* lpFileTime,
  LPFILETIME lpLocalFileTime
);
B_N вне форума Ответить с цитированием
Старый 11.03.2008, 13:08   #3
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Понятно вроде все да не совсем...
Код:
var
    hFilefrom, hfileinto: integer;
    ff1,ff2,ff3,fi1,fi2,fi3: pfiletime;
......
begin
hfilefrom:=CreateFile(pchar(from+d), GENERIC_READ, FILE_SHARE_READ, nil,
  OPEN_EXISTING, 0, 0);
hfileinto:=CreateFile(pchar(into+d), GENERIC_READ, FILE_SHARE_READ, nil,
  OPEN_EXISTING, 0, 0);
//Это получаю хендлы двух файлов, которые необходимо сравнить
GetFileTime(hFilefrom,ff1,ff2,ff3);
GetFileTime(hFileinto,fi1,fi2,fi3);
//считываю временные параметры файла
//ff3 и fi3 - времена последних записей  первого и второго файла соответственно, как теперь узнать самым простым способом, который из них был изменен позднее?
dimonbest вне форума Ответить с цитированием
Старый 12.03.2008, 06:51   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от dimonbest Посмотреть сообщение
Понятно вроде все да не совсем...
ff3 и fi3 - времена последних записей первого и второго файла соответственно, как теперь узнать самым простым способом, который из них был изменен позднее?
Код:
LONG CompareFileTime(
  const FILETIME* lpFileTime1,
  const FILETIME* lpFileTime2
);
Возвращает:
-1 - первое время раньше
0 - времена совпадают
+1 - второе время раньше

а вообще члены структуры FILETIME - это две "половинки" 64-разрядного целого без знака. И файлы можно даже не открывать - все три записи возвращает FindFirstFile.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленький вопрос(дата и время в с++) Goblin Общие вопросы C/C++ 3 27.05.2008 09:30
Дата и время + секунда serjo Помощь студентам 5 24.01.2008 00:21
время и дата на winapi deadh5n1 Помощь студентам 3 14.12.2007 15:35