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

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

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

Post by Smitis »

Latest post of the previous page:

John Doe,
Синхронизация и индикация. Одна индикация смысла, естественно, не имеет.
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Smitis wrote: Mon 11 Dec, 2017 19:15текущий каталог нужен для работы утилит из командной строки
Для работы утилит из командной строки никакая синхронизация не нужна.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

DrKnS,
Ну почему же, если утилита обрабатывает файлы в текущей директории, а директория не та, что на экране...
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

0001097: Индикация длинных путей и проблемных имён файлов
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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 “Нужна помощь”