far.FileTimeResolution

Здесь обсуждается всё, что касается макросов.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by SUSim »

Latest post of the previous page:

John Doe wrote: Fri 19 May, 2023 21:13 1000 не должно быть константой.
Возможно стоит предусмотреть возможность передачи параметром.
  • Учитывая возможности изменить с помощью far.FileTimeResolution разрешающую способность ряда функций апи плагинов, иногда требуется вычислять так:

    Code: Select all

    local resolution = far.FileTimeResolution()==1 and 1000 or bit64.new(10000000)
  • В случае же если значение предполагается использовать в контексте win.Get/SetFileTimes, требуется bit64.new(10000000) независимо от режима far.FileTimeResolution.
Документация:
hh mk:@MSITStore:%FARHOME%\Encyclopedia\luafar_manual.chm::/544.html
Обсуждение: viewtopic.php?p=174178#p174178
Спонтанно... охренеть!
я и так потратил время на то чтобы выяснить надо умножать или нет и в каких случаях....
кому нужно менять эту настройку, и нафик она вообще нужна???
лучше определиться как фар отдает это время или встроенную функцию перевода file-stamp-sys time
зачем приседания от пользователя.... Вы же сами писали пусть падает скрипт... те кто умолчания править могут и скрипты поправят...
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by John Doe »

SUSim wrote: Fri 19 May, 2023 21:25 кому нужно менять эту настройку
Тут сейчас дело не в том, что настройку кто-то у себя изменить может, а в том, что (по-умолчанию) различные функции требуют разного разрешения.
И конкретно для использования в win.Get/SetFileTimes надо применять 10000000, а не 1000 как в вашем примере.
Вы же сами писали пусть падает скрипт
В случае если кто-то применит неверное значение скрипт вовсе не упадёт.
Просто выполнит не то что задумывалось, например установит год файла в 1601.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by SUSim »

John Doe, не понял... %(
у меня все работает.... и в нужных местах * 1000, а в других * 1000 * 1000...
Объясните подробнее тогда, что и где поменять...
Last edited by SUSim on Fri 19 May, 2023 21:47, edited 2 times in total.
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by John Doe »

SUSim wrote: Fri 19 May, 2023 21:46 а в других * 1000 * 1000...
10*1000*1000, и результат умножения может превысить 53 бита, используемые в Lua для чисел, поэтому точнее будет bit64.new(10000000).
SUSim wrote: Fri 19 May, 2023 21:46 у меня все работает
Уверен что у вас работает, но поскольку в данной теме функция приведена в общем виде, я позволил себе некоторые уточнения, чтобы кто-нибудь из читателей в дальнейшем не воспользовался тупой копипастой.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by SUSim »

По моему
far.FileTimeResolution()
это засада тогда... одно дело - скорректировать макрос и еще раз на что умножить, а другое
необходимость применения bit64.new ... %(
ой не зря Shmuel, это по умолчанию сделал, и зачем менять настройку? Пример, плиз, а то я просто не понимаю (при быстродействии систем хранения) я не вижу пользы точнее 0.1 сек... периодически сталкиваюсь с кешированием - отправили на запись по очереди 1 и 2 фалы, и у фала номер 2 время новее чем у первого...
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by John Doe »

SUSim wrote: Fri 19 May, 2023 22:32 необходимость применения bit64.new
Без bit64.new тоже будет работать, но точность может незначительно потеряться.
SUSim wrote: Fri 19 May, 2023 22:32 ой не зря Shmuel, это по умолчанию сделал
Мне лично хватает и точности по-умолчанию, и наоборот, повышенная не мешает. А смущает в этом деле только то, что для функций far API одна резолюция, а для win.* - другая.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by Shmuel »

John Doe wrote: Fri 19 May, 2023 22:39 А смущает в этом деле только то, что для функций far API одна резолюция, а для win.* - другая.
Не всегда удаётся с 1-й попытки принимать правильные решения.
Иногда правильное решение становится очевидным через год или годы, а поезд уже ушёл.
Вот на линуксе, пользуюсь тем, что у меня мало пользователей, и АПИ перелицовывал уже много раз.
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by John Doe »

Shmuel wrote: Fri 19 May, 2023 22:45 а поезд уже ушёл
У себя по вашему совете в _macroinil.lua применил far.FileTimeResolution(2), ничего не поломалось.
Сделать это "по умолчанию" это конечно breaking change, но активные пользователи все на форуме, и вполне могут к такому подготовиться, и учесть в своих скриптах заранее.
Имхо
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by SUSim »

Да ни вопрос... поменяю я константы эти....
но лучше не проверять far.FileTimeResolution(2) и т.п.
а умножить/поделить на что-то типа F_FileTimeResolution которая уже зависит от настройки....
Last edited by SUSim on Fri 19 May, 2023 23:01, edited 1 time in total.
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by Shmuel »

John Doe wrote: Fri 19 May, 2023 22:51 активные пользователи все на форуме, и вполне могут к такому подготовиться, и учесть в своих скриптах заранее.
Это так, только вопрос, какая практическая польза будет от этого.
Мне, к примеру, в макросах хватает разрешения 1 мсек.
А в LF Search сделал высокое разрешение, чтобы по CtrlA в панели найденных файлов данные совпадали с данными Фара, то же касается и фильтра при поиске.
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by John Doe »

Shmuel wrote: Fri 19 May, 2023 23:05 какая практическая польза будет от этого.
Практическая польза для меня такова:
Данные получили в одном месте апи, использовали в другом без всяких конвертаций. И без приседаний вокруг far.FileTimeResolution.
Результирующий код переиспользовали впоследствии в другом месте, безо всяких изменений.

А точности действительно хватает. Собственно меня бы устроило и если бы просто действие far.FileTimeResolution распространялось на win.Get/SetFileTimes, но такое изменение не менее breaking.
https://t.me/FarManager — Telegram чат
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by Yegor »

John Doe, а почему это нельзя положить в какой-нибудь luafar_init.lua? (я далек от макросов, могу пургу нести)
Last edited by Yegor on Fri 19 May, 2023 23:33, edited 1 time in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by John Doe »

Yegor wrote: Fri 19 May, 2023 23:32 а почему это нельзя положить в какой-нибудь luafar_init.lua?
Для себя можно.
Но после этого чужие скрипты могут начать вести себя некорректно.
Разумеется возможно написать скрипт, который будет вести себя корректно в любом режиме, но сейчас это требует определённых приседаний.
И в случае сторонних скриптов нет никакой гарантии что в них всё учтено.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by Shmuel »

John Doe, как по мне, важность этого вопроса сильно преувеличена. Практически все макрописатели, включая меня, вообще этим не заморачиваются. Разве что, когда вы напоминаете.
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by John Doe »

И я не заморачивался.
До того как потратил некоторое время отлавливая баг в своём коде, вызванный тем что данные, которые выглядели одинаковыми (одноимённые имена полей в таблице), на деле отличались.
Shmuel wrote: Fri 19 May, 2023 23:46 важность этого вопроса сильно преувеличена
Важность относительна конечно, не спорю. Это даже не баг.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Получение даты создания PE-файлов (*.EXE, *.DLL и др.)

Post by Shmuel »

Насчёт приседаний при программировании - в идеальном мире их нет, а в реальном приходится и ещё как.
Насчёт возможных улучшений, связанных с FileTimeResolution - в чём проблема, я же теперь не стою на пути, я как бы наблюдатель.
Делайте любые улучшения.
Post Reply

Return to “Обсуждение макросов”