Не всегда формируется поле ChangeTime в GetFileInfo Topic is solved

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не всегда формируется поле ChangeTime в GetFileInfo

Post by buniak_a_h »

Здравствуйте!
Столкнулся со странностью: функция win.GetFileInfo (а также функция far.RecursiveSearch при вызове CallBack-функции в первом параметре) не всегда формируют поле ChangeTime. Закономерности пока не понял. У меня даже такое впечатление, что на одном и том же файле могут быть разные результаты. Может мне кто-нить объяснить, от чего это зависит?
Для тестирования:
lua:=win.GetFileInfo(APanel.Current).ChangeTime
или
lua:require('le')(win.GetFileInfo(APanel.Current))
Может, я что-то неправильно делаю?
P/S. Возможно, этот вопрос относится скорее к ОС - не знаю. Но если знаете ответ - не отсылайте в другой форум, а просто напишите, плииз!
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Не всегда формируется поле ChangeTime в GetFileInfo

Post by Shmuel »

Функция win.GetFileInfo не заполняет поле ChangeTime. Может быть когда-нибудь будет, в текущем состоянии нет.
Функция far.RecursiveSearch заполняет.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Не всегда формируется поле ChangeTime в GetFileInfo

Post by citRiks »

Не знаю насколько это утешает, на всякий случай сообщу что GetFileInfo() зато дает LastWriteTime.
Если это для папки, то при создании в ней подпапки, в LastWriteTime родительской это отобразится
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не всегда формируется поле ChangeTime в GetFileInfo

Post by buniak_a_h »

Для тех, кому это может оказаться нужно.
У себя я все вызовы win.GetFileInfo заменил следующей функцией:
  1. local function GetFileInfo(FName)
  2.  
  3.  -- Аналог win.GetFileInfo, но заполняет больше полей (в частности, ChangeTime)
  4.  
  5.  local FileInfo
  6.  
  7.  local function FileProc(fi)
  8.  
  9.   FileInfo = fi; return true
  10.  
  11.  end
  12.  
  13.  if far.RecursiveSearch(mf.fsplit(FName, 3), mf.fsplit(FName, 12), FileProc, 'FRS_SCANSYMLINK') then
  14.  
  15.   return FileInfo
  16.  
  17.  end
  18.  
  19. end
citRiks wrote: Sat 25 Jul, 2020 13:13 Не знаю насколько это утешает, на всякий случай сообщу что GetFileInfo() зато дает LastWriteTime.
Если это для папки, то при создании в ней подпапки, в LastWriteTime родительской это отобразится
В панельном дереве я так и сделал - ChangeTime не использую, а использую LastWriteTime. Увы, не могу себе представить ситуацию, когда они различаются (кроме редактирования "А" на "А"). Но на практике они действительно часто разные
Кстати, есть ещё win.GetFileTimes, но она тоже возвращает только 3 времени.
Last edited by buniak_a_h on Sat 25 Jul, 2020 13:24, edited 1 time in total.
Post Reply

Return to “Нужна помощь”