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

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
buniak_a_h
Posts: 1921
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 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: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

Функция win.GetFileInfo не заполняет поле ChangeTime. Может быть когда-нибудь будет, в текущем состоянии нет.
Функция far.RecursiveSearch заполняет.

citRiks
Posts: 702
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 210 times
Been thanked: 44 times

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

Post by citRiks »

Не знаю насколько это утешает, на всякий случай сообщу что GetFileInfo() зато дает LastWriteTime.
Если это для папки, то при создании в ней подпапки, в LastWriteTime родительской это отобразится
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

buniak_a_h
Posts: 1921
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

Для тех, кому это может оказаться нужно.
У себя я все вызовы win.GetFileInfo заменил следующей функцией:
  1. local function GetFileInfo(FName)
  2.  -- Аналог win.GetFileInfo, но заполняет больше полей (в частности, ChangeTime)
  3.  local FileInfo
  4.  local function FileProc(fi)
  5.   FileInfo = fi; return true
  6.  end
  7.  if far.RecursiveSearch(mf.fsplit(FName, 3), mf.fsplit(FName, 12), FileProc, 'FRS_SCANSYMLINK') then
  8.   return FileInfo
  9.  end
  10. 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 “Нужна помощь”