win.GetFileInfo - текущий каталог всегда %FARHOME%

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Smitis
Posts: 1531
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 15 times
Been thanked: 27 times
Contact:

win.GetFileInfo - текущий каталог всегда %FARHOME%

Post by Smitis » Mon 11 Dec, 2017 19:38

Latest post of the previous page:

John Doe,
Синхронизация и индикация. Одна индикация смысла, естественно, не имеет.
Разум когда-нибудь победит.

User avatar
DrKnS
Posts: 4891
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 159 times

win.GetFileInfo - текущий каталог всегда %FARHOME%

Post by DrKnS » Mon 11 Dec, 2017 19:54

Smitis wrote:
Mon 11 Dec, 2017 19:15
текущий каталог нужен для работы утилит из командной строки
Для работы утилит из командной строки никакая синхронизация не нужна.

Smitis
Posts: 1531
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 15 times
Been thanked: 27 times
Contact:

win.GetFileInfo - текущий каталог всегда %FARHOME%

Post by Smitis » Mon 11 Dec, 2017 20:07

DrKnS,
Ну почему же, если утилита обрабатывает файлы в текущей директории, а директория не та, что на экране...
Разум когда-нибудь победит.

User avatar
DrKnS
Posts: 4891
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 159 times

win.GetFileInfo - текущий каталог всегда %FARHOME%

Post by DrKnS » Mon 11 Dec, 2017 20:22

[mention]Smitis[/mention], потому что при запуске директория задаётся явно.

User avatar
John Doe
Бюрократ
Posts: 11815
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 26 times
Been thanked: 129 times

win.GetFileInfo - текущий каталог всегда %FARHOME%

Post by John Doe » Tue 12 Dec, 2017 00:00

Smitis wrote:
Mon 11 Dec, 2017 20:07
Ну почему же, если утилита обрабатывает файлы в текущей директории, а директория не та, что на экране...
Так будет только в случае если синхронизация невозможна.

0001097: Индикация длинных путей и проблемных имён файлов

User avatar
John Doe
Бюрократ
Posts: 11815
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 26 times
Been thanked: 129 times

win.GetFileInfo - текущий каталог всегда %FARHOME%

Post by John Doe » Tue 12 Dec, 2017 09:28

Zzzz wrote:
Sun 10 Dec, 2017 17:10
запустил far.exe -m -p"C:\Program Files (x86)\Far3\Plugins\LuaMacro" -ro -s %TEMP%\farprofile\%RANDOM%, текущий каталог c:\, запускаю lua:msgbox(win.GetFileInfo('far.exe').FileName) - работает (со всеми именами из %FARHOME%), а если указываю Descript.ion (лежит в корне), то получаю ошибку "attempt to index a nil value".
В 4700 нормально работает.
Подводя итог.

Чтобы в макросе получить ожидаемый результат надо одно из двух:
  1. Если не хочется вникать.
    Просто используйте функции макро апи (mf.*, Panel.*, APanel.*, PPanel.*)
  2. Если же хотите использовать функции апи плагинов, то абсолютно необходимо понимать, что вы делаете, что невозможно без изучения Энциклопедии.
    Наличию неочевидных ньюансов гарантируется, см. пометку Внимание.
    luafar_manual это не самостоятельное руководство, а дополнение к Энциклопедии.

    По существу.
    Задавая только имя файла (без папки) вы задаёте относительный путь.
    • Можно привести его к абсолютному, используя far.ConvertPath.
    • Либо можно изменить текущую папку (win.SetCurrentDir) на значение, полученное от far.GetCurrentDirectory.
      По завершению работы с файлами желательно вернуть всё как было.

Post Reply

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