Макрос для переключения между архиваторами

Здесь обсуждается всё, что касается макросов.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Latest post of the previous page:

John Doe
Нету ни каких проблем - прописываешь асоциацию и всё зашибись.
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Post by John Doe »

t-rex wrote: Нету ни каких проблем - прописываешь асоциацию и всё зашибись.
Алекс, год назад я уже пытался это сделать, но столкнулся с неразрешимой тогда проблемой.
Ты мне ответил:
Ну это не совсем баг так как для ассоциаций этот файл создаёться в %temp% только на время выполнения команды. Но наверно надо сделать так что если команда была префикс и открылась панель плагинва то держать %temp% до закрытия плагина. Но это пока что проблемно.
...
...
Короче пока что префиксы для таких вещей не предназначены, надо пользоваться стандартным входом в архив.
Глянь еще раз:
http://forum.farmanager.com/viewtopic.php?t=160
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

John Doe
Мда, ну сэ ла ви тогда :(
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Post by Smitis »

Тема переключения между архиваторами мне понравилась, поэтому появился у меня в макросах вот такой изврат макрописательской мысли:

Code: Select all

%path = APanel.UNCPath;
%file = APanel.Current;

%p=index(%path,":");
$if( %p < 0 )
; Если нет двоеточия - выход,
  $exit
$end
%prefix=substr(%path,0,%p+1);
$if( %prefix!="7-zip:" && %prefix!="ma:" )
; Если не в архиве - выход
  $exit
$end

; Очистить командную строку!
Esc

; Путь без префикса
%path = substr(%path,%p+1,len(%path)-%p);

; Находимся ли в корне архива
%root = %path=="\\";

; Выходим из архива
$if( %root )
  CtrlBackSlash
$else
  CtrlBackSlash CtrlBackSlash
$end

; Меняем архиватор
$if(%prefix=="7-zip:")
  $if( !%root )
    ; "лишние" символы у 7zip
    %path = substr(%path,1,len(%path)-2);
  $end
  $text "ma:"
$else $if(%prefix=="ma:")
  ;%path = substr(%path,0,len(%path)-1);
  $text "7-zip:"
$end $end
CtrlEnter Enter

$if( !%root )
  $text "cd "
  $text %path
  Enter
$end
Panel.SetPos(0,%file)
(если кто вздумает использовать - строки, начинающиеся с точки запятой следует удалить, это коментарии, остальные строки объединить в одну)

Макрос, не без недостатков:
- теряется содержимое коммандной строки;
- теряется выделение файлов;
- вложенные архивы не поддерживаются;
- параметр SubstPluginPrefix (TechInfo #42) должен быть равен 1;
Кроме того, в другой версии ФАРа/плагинов поведение макроса может измениться.

Но для применения сойдёт :)
Post Reply

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