Страница 2 из 3

Добавлено: Ср авг 17, 2016 11:43
sa
Avada
"Файл не найден!".

Добавлено: Ср авг 17, 2016 11:56
Avada
sa
Такое сообщение может выводиться в данном контексте только при попытке запуска команды savetabs либо вообще без параметра. либо с чем-то, что не воспринимается как корректный параметр. Тут надо с путём разбираться. В моём варианте записи проверялось? С простейшим параметром типа c:\my.tab проверялось?

Добавлено: Ср авг 17, 2016 12:03
sa
Avada писал(а):c:\my.tab
Не помогает.

P.S. Позже попробую кнопку на Win 7.

Добавлено: Ср авг 17, 2016 12:06
Avada
sa
Тогда я пас, больше идей не имею. Ну ещё для порядка версию и битность системы и TC уточнить надо, пожалуй.

Добавлено: Ср авг 17, 2016 14:18
sa
Поведение одинаковое в TC 9.0b9, что на XP, что на Win 7(32).
Пробовал ещё кнопку

Код: Выделить всё

TOTALCMD#BAR#DATA
em_SEL *.txt

wcmicons.dll,39
Выделить TXT-файлы


-1
с пользовательской командой

Код: Выделить всё

[em_SEL]
cmd=SELECTFILES
param=%A
Тоже не работает. При вызове из командной строки файлы выделяются. В TC 8.52a поведение для последней команды аналогичное.

Добавлено: Чт авг 18, 2016 08:51
sa
Flasher писал(а):-del-
Не понял, у самого-то обсуждавшиеся здесь кнопки (для em-команд с %A в параметрах) работают?

Добавлено: Чт авг 18, 2016 09:25
Avada
sa
Приведённые выше коды кнопки/команды для выделения файлов, во-первых, не специфичны для TC 9, во-вторых, являют собой пример неправильного синтаксиса. Никакой маски в качестве параметра к имени em-команды, которая сама вызывает "пустую" параметризованную команду, в кнопке добавляться не может. При нормальном указании той же маски в самой юзер-команде как параметра команды SELECTFILES кнопка, разумеется, прекрасно работает. Предлагаю далее обсуждать здесь только команду SAVETABS, не отвлекаясь на посторонние вещи.
Впрочем, один момент этот пример позволил прояснить. Я первоначально за недосугом не отреагировал на второй из приведённых здесь примеров. А там ровно тот же глюк: попытка использовать em-команду с несвойственным для кнопки синтаксисом. Потому и не работает.

Также я убедительно прошу любого, кто желает ссылаться на параметр %A, либо убедительно обосновать, наконец, его необходимость и применимость в данном конкретном случае — для кнопки, опосредованно запускающей команду с параметрами (вариант "кто-то когда-то написал, а я повторяю" аргументом не является), либо прекратить его упоминание как существенного условия воспроизведения проблемы. Дабы не вносить дополнительную путаницу в и без того не особо ясный вопрос.

Желающих продолжать выяснение повторно адресую к своему посту. Создаём em-команду с произвольным именем на основе указанной команды с параметрами (с поправками на пути). Проверяем работу этой юзер-команды из командной строки TC. Затем создаём кнопку, где в поле "Команда" указано только имя новой юзер-команды, а в поле "Параметры" — ничего, и проверяем ещё раз. Без всякой отсебятины, ровно так, как написано.

Кроме того, поскольку обсуждение работы команд и кнопок с SAVETABS приобрело самодостаточный характер и уже никак не связано со cпецификой TC 9.0 beta 9, оно выносится в самостоятельную тему.

Добавлено: Чт авг 18, 2016 11:06
sa
Avada писал(а):являют собой пример неправильного синтаксиса
Я с этого и начинал:
em_SaveTabs с параметром, по-моему, из кнопки вызвать невозможно, разве из командной строки.
после чего на мой уточняющий вопрос
второй код кнопки с вызовом приведённой ранее команды em_SaveTabs – работающий (при отсутствии кавычек)?
получил вполне однозначный ответ
Да, код работающий. А почему у кого-то возникла проблема, понятия не имею.
После чего и продолжилось выяснение…

Добавлено: Чт авг 18, 2016 11:44
Avada
sa
Значит, второпях я понял вопрос не совсем верно. Ранее данный ответ про "работающий код" конкретной записи аннулируется. Так что мы имеем теперь, с учётом сделанных поправок?

Добавлено: Чт авг 18, 2016 13:40
sa
Avada
По-прежнему не ясно, почему у Skif_off не работает и первый код кнопки (со снятыми кавычками). Вариант, что папка Tabs не существует, маловероятен…

Добавлено: Чт авг 18, 2016 13:56
Avada
sa
Я правильно понимаю, что реально не закрыта только проблема с его неработающим без кавычек первым кодом? (Который при этом ничем принципиально не отличается от работающего моего.) Или ещё что-то осталось неясным? Вроде бы нет...

Добавлено: Пт авг 19, 2016 06:54
Skif_off
Добрался попробовать, кнопки на панели инструментов:
[cut="кнопка 1"]

Код: Выделить всё

TOTALCMD#BAR#DATA
savetabs %COMMANDER_PATH%\Tabs\2.tab

wcmicons.dll



-1
[/cut]
[cut="кнопка 2"]

Код: Выделить всё

TOTALCMD#BAR#DATA
em_SaveTabs

wcmicons.dll


0
10000
в usercmd.ini

Код: Выделить всё

[em_SaveTabs]
cmd=savetabs
param=%COMMANDER_PATH%\Tabs\2.tab
[/cut]
[cut="кнопка 3"]

Код: Выделить всё

TOTALCMD#BAR#DATA
em_SaveTabs %COMMANDER_PATH%\Tabs\2.tab

wcmicons.dll


0
10000
в usercmd.ini

Код: Выделить всё

[em_SaveTabs]
cmd=savetabs
[/cut]
1 и 2 работают, 3 - не работает. И я не понимаю логику.

При этом с WM_COPYDATA команда, аналогичная кнопке 3:

Код: Выделить всё

em_SaveTabs %COMMANDER_PATH%\Tabs\2.tab
работает (точнее - работает только если путь абсолютный).

И это, похоже, не баг, т.к. с opentabs и appendtabs всё вроде аналогично (и на 8.52а).

Добавлено: Пт авг 19, 2016 07:30
Avada
Skif_off
Третья кнопка и не должна работать. Логика проста, объясняю ещё раз. С одной стороны, пользовательская команда не воспринимает параметры, а её пытаются заставить сделать именно это вместо указания параметров в её собственных настройках. С другой стороны, opentabs и appendtabs можно запустить вообще без параметров, а savetabs — нет. Запуск команды без параметра невозможен, а параметр указан не там, где следует, отсюда и результат.
По каким правилам работают команды с WM_COPYDATA, я — в силу недостаточной квалификации — обсуждать не берусь.

Добавлено: Пт авг 19, 2016 08:46
Skif_off
Avada
Логика простая, согласен, понял, принял :) Но получается с некоторым изъяном: команда принимает параметр, тогда какая разница, каким из штатных способов этот параметр ей передан?
К тому же, с WM_COPYDATA работает как раз третий вариант.

Добавлено: Пт авг 19, 2016 09:14
Avada
Skif_off
А это штатный способ передачи параметра данному типу команд?
Поставим на минуточку вопрос шире. Имеется пользовательская команда, созданная — в общем виде — на основе чего угодно (встроенной команды, команды с параметрами, другой пользовательской команды, цепочки команд разного вида, внешней программы с параметрами и без, скрипта/батника и пр.) Вправе ли мы ожидать от такой произвольной юзер-команды подхвата параметров, указанных не в ней самой, а уже в кнопке, в поле "Команда"?
Далее, возможно ли взаимодействие упоминавшегося выше стандартного параметра %A с записанными в юзер-командах параметризованными командами? Это тоже интересный вопрос, требующий выяснения.
И, разумеется, документированность работы в TC с WM_COPYDATA пока оставляет желать много лучшего.