View previous topic :: View next topic |
Author |
Message |
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Jun 20, 2006 11:25 Post subject: |
|
|
Batya wrote: | В буфере может быть не вся информация о кнопке. Для панели работает, даже если всего две строки - заголовок и команда. |
Полнота заполнения данными никак не влияет на структуру данных, конечно, если данные помещены в буфер именно при копировании с панели (поставлена была именно эта задача). Ну, а если копировать из бог весть каких источников (например, из мессаг форума), то может быть и другая структура. Равно, как и вообще - мусор
Никакой скрипт не поможет отличить реальные данные кнопки от откровенной галимы. Так что, можешь эту проверку просто выбросить или сделать ее более толерантной, например, вот так: Code: | If UBound(Data) < 2 or UBound(Data) > 8 Then |
|
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue Jun 20, 2006 12:12 Post subject: |
|
|
Volniy wrote: | конечно, если данные помещены в буфер именно при копировании с панели (поставлена была именно эта задача). |
А зачем же тогда проверка на защиту от дурака, если в буфере не текст?
И в постановке задачи не было слов о команде "Копировать" с панели. Речь шла о каком-либо копировании+преобразовании кнопки в команду меню.
Volniy wrote: | Ну, а если копировать из бог весть каких источников (например, из мессаг форума), то может быть и другая структура. |
Скрипт должен нормально работать, если копировать из темы "Обмен кнопками".
Volniy wrote: | Так что, можешь эту проверку просто выбросить или сделать ее более толерантной |
Уже выбросил - см. последний подредактированный пост со скриптом. |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Jun 20, 2006 12:42 Post subject: |
|
|
Batya wrote: | И в постановке задачи не было слов о команде "Копировать" с панели. Речь шла о каком-либо копировании+преобразовании кнопки в команду меню. |
Andry wrote: | ...написать скрипт который копирует кнопку и вставляет её в меню запуск. |
Копировать кнопку это и означает именно копировать кнопку, то есть нажать правую кнопку мыши на кнопке из панели TC и выбрать пункт меню "Копировать". Я конечно могу очень жестоко ошибаться, но imho "кнопка" это жестко заданный набор данных (не нами придуманный, кстати) и не нужно подстраивать скрипт под ошибки этих данных. Или данные верны или - до свидания. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue Jun 20, 2006 13:15 Post subject: |
|
|
Volniy
Судя по фразе
Andry wrote: | Что-бы не усложнять процесс можно копировать последнюю кнопку из бара в конец меню запуск ... |
... здесь не было мыслей о команде "Копировать", а были мысли о прямом чтении *.bar.
Ладно, забей. Лучше оцени, все ли теперь нормально со скриптом. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Jun 20, 2006 16:12 Post subject: |
|
|
Batya wrote: | Лучше оцени, все ли теперь нормально со скриптом. |
Технические замечания:
1) Проверка Code: | If UCase(Left(ClipB, 17)) = "TOTALCMD#BAR#DATA" Then | сложнее моего варианта и при этом недостаточна. Я ведь специально добавил проверку на наличие там еще и VBCRLF, чтобы Split возвратил массив хотя бы с одним элементом, а иначе UBound(Data) потом выдаст ошибку.
2) FindMenu - лишняя переменная. Просто вместо напиши и все.
3) Если уж ты говоришь, что скрипт универсальный, то напиши об этом в его шапке. Сейчас там только про копирование кнопки с панели. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue Jun 20, 2006 16:30 Post subject: |
|
|
1) Если после "TOTALCMD#BAR#DATA" есть пробелы, то средствами TC можно вставить кнопку, значит и скрипт это должен позволять. А при твоей проверке это не получится. И даже если в буфере всего одна строка "TOTALCMD#BAR#DATA", UBound(Data) нормально отработает.
2) Переменная не лишняя. Рассмотри варианты, если последняя команда с номером 199 и если номер 200. Т.е. надо для последнего номера (200) разделить варианты номального прохода (команда уже есть) и вариант отсутствия команды с таким номером.
3) Хотя он и, якобы, универсальный, не хочу еще добалять всяческие защиты от дурака. Пусть опытные пользуются скриптом со знанием дела, а для неопытных все, что им нужно, написано в шапке. |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Jun 20, 2006 17:58 Post subject: |
|
|
Batya wrote: | Переменная не лишняя. Рассмотри варианты, если последняя команда с номером 199 и если номер 200. Т.е. надо для последнего номера (200) разделить варианты номального прохода (команда уже есть) и вариант отсутствия команды с таким номером. |
Ладно, давай вместе проверим. Что мы ищем в этом цикле? Мы ищем первый номер user-меню, которого пока еще нет в ини-файле.
Итак, если у нас нету 199-го тогда i имеет значение 199, если 200-го тогда i имеет значение 200. Но если все-таки вдруг (!!!) 200-ый пункт меню уже имеется в наличии, тогда переменная i после For ... Next примет значение 201 (не нужно объяснять почему?). Теперь-то ты уже должен согласиться, что дополнительные переменные тут не нужны.
А в остальном, даже при наличии противоречий (то буду перепроверять, то не буду ) , хозяин - барин. Для одного скрипта п*****жа уже более чем достаточно. Я - пас. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue Jun 20, 2006 18:15 Post subject: |
|
|
Согласен.
Тем более, что я уже по-другому сделал - см. исправленный пост. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
aLexx
Joined: 14 Mar 2005 Posts: 442 Location: Новокузнецк
|
(Separately) Posted: Fri Jul 06, 2007 14:42 Post subject: |
|
|
Срочно понадобилось перекатить несколько кнопок в меню "Старт", для того,
что бы можно было их повесить на горячие клавиши (отключение флешек, работа с CD).
Опробовал скрипт. Типа, всё пашет, как надо, НО!...
У меня секция [USER] файла "wincmd.ini" имеет такой вид -
"RedirectSection=%COMMANDER_PATH%\[User].ini".
Надеюсь, ясно в чём дело? Новые пункты меню добавляются в "wincmd.ini", а не в "[User].ini".
Как победить? В принципе, пока я вручную перенёс - уж очень срочно надо было. |
|
Back to top |
|
|
funduk
Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Fri Jul 06, 2007 16:13 Post subject: |
|
|
aLexx wrote: | Срочно понадобилось перекатить несколько кнопок в меню "Старт", для того,
что бы можно было их повесить на горячие клавиши (отключение флешек, работа с CD) | Ставь семёрку и используй user-defined commands. |
|
Back to top |
|
|
aLexx
Joined: 14 Mar 2005 Posts: 442 Location: Новокузнецк
|
(Separately) Posted: Fri Jul 06, 2007 16:30 Post subject: |
|
|
Семёрки юзаю по мере их выпуска, начиная с 7.0pb1, а об "user-defined commands" не слышал...
Счас буду смотреть. Спасибо! |
|
Back to top |
|
|
aLexx
Joined: 14 Mar 2005 Posts: 442 Location: Новокузнецк
|
(Separately) Posted: Fri Jul 06, 2007 16:34 Post subject: |
|
|
Заглянул в справку (для 7.01 - СНМ) ничего не нашёл...
Где искать-то? |
|
Back to top |
|
|
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Fri Jul 06, 2007 17:19 Post subject: |
|
|
Из справки:
Quote: | Диалоговое окно: Выбор команды
Этот диалог позволяет выбрать внутреннюю команду из файла totalcmd.inc, а также определить новые команды, которые будут храниться либо в файле usercmd.ini, либо в специфическом для данного языка файле wcmd_lng.ini (например, wcmd_rus.ini для русского языка).
...
Новая... Создаёт новую пользовательскую команду em_xyz. Пользовательские команды могут использоваться для вызова программы с нужными параметрами, в том числе из главного меню или по горячей клавише. |
Пример использования - в истории Тотала:
Quote: | 23.07.06 Added: Support for user-defined commands em_xyz: usercmd.ini in same directory as wincmd.ini, with entries like this: [em_notepad] cmd=notepad.exe param=%P%N path=c:\windows iconic=0 (same as in .bar file, but not numbered) |
|
|
Back to top |
|
|
aLexx
Joined: 14 Mar 2005 Posts: 442 Location: Новокузнецк
|
(Separately) Posted: Fri Jul 06, 2007 17:48 Post subject: |
|
|
Сказать честно, это всё нам известно и понятно без проблем.
Вопрос в другом - ручками всё это дело набирать неохота (хотя я и печатаю ок.
200 знаков в минуту). А в этой ситуёвине пришлось комманды из секции [USER]
вручную переносить в другой файл. Хотя, честно сказать, заняло это дело полминуты. |
|
Back to top |
|
|
|