Страница 15 из 27

Добавлено: Ср окт 06, 2010 07:36
sa
Andrey_A писал(а):В Helper есть функция SetTextToClip(Text) - отправить текст в буфер обмена.... при большом куске текста, эта функция не срабатывает.
В апреле этого года Volniy собирался это поведение исправить:
Volniy писал(а):Подтверждаю. Не заметил раньше, потому что на больших количествах файлов попросту не пробовал. Ограничение возникает на объеме буфера около 32 кб. Тут я сам виноват - с панталыку неверно указал тип переменной для хранения размера буфера. Исправим, не проблема.

Добавлено: Ср окт 06, 2010 09:50
Flasher
Andrey_A писал(а):Ниже описанный код, сохраненный в vbs - не работает.
Что-то с настройками безопасности IE. Ты у нас по методам тыка спец, найдёшь брешь - доложи, если не трудно. :wink:

Есть ещё пару вот таких интересных штучек(требуют установки и реги библиотек): 1, 2.
2-я, кстати, ещё и ini-шники править умеет (это к недавнему P.S. Samwatas).

Добавлено: Ср окт 06, 2010 13:20
Samwatas
Есть ещё пару вот таких интересных штучек(требуют установки и реги библиотек)
- о портативности, как я понимаю, не стоит даже и заикаться?

Добавлено: Ср окт 06, 2010 13:25
Flasher
Может речь о портабельности, а не портативности? Если да, то при желании можно в скрипте регистрировать библиотеку, и поставить на проверку для следующих запусков. Будет почти аналогия.

Добавлено: Вс окт 17, 2010 15:37
Volniy
Script Helper ActiveX for TC beta12
Скачать файл: http://wincmd.ru/download.php?id=script_helper

Исправлены баги: 1) ограниченный до 32 кб размер помещаемого в Буфер обмена текста, 2) ошибка (Несоответствие типа) при вызове методов SetSrcPath и SetTrgPath, если в качестве параметра передавалась переменная, а не просто строка.

Для указания нескольких нажатий клавиши пробела теперь можно использовать синтаксис {SPACE x} или {SP xx} (одиночный пробел {SPACE} или {SP}). Сделано для лучшей читаемости скриптов.

Добавлены Англоязычные доки (спасибо Lev)

PS Пример использования SetSrcPath для выделения файла в панели - http://forum.wincmd.ru/viewpost.php?p=68875

Добавлено: Вс окт 17, 2010 16:28
sa
Volniy писал(а):Исправлены баги: 1) ограниченный до 32 кб размер помещаемого в Буфер обмена текста
Проверил: зебра (ZebraMark-3.vbs) для папки Windows, к которой предварительно применён Ctrl+B (больше 9000 файлов), теперь выдаёт верный результат. Спасибо за обновление!

Добавлено: Вс окт 17, 2010 20:12
Flasher
Volniy
Что-то у меня SetTrgPath перестал устанавливать курсор в другой панели и выделять файл, и после него не работает SendKeyStore.
Добавлено: похоже SetTrgPath ни при чём, через WSH.Run то же самое.. :(

Добавлено: Вт ноя 23, 2010 06:53
Flasher
Нужна такая вещь: задаём список
Set List = CreateObject("Scripting.Dictionary")
List.Add "бла", ""
List.Add "блабла", ""
List.Add "блаблабла", ""
......
Сравниваем значение ранее заданной переменной со всеми элементами списка. Если один из этих элементов совпал, то используем найденное значение из списка в каком-нибудь последующем методе. Как правильно записать?

Добавлено: Вт ноя 23, 2010 14:54
Batya
Flasher
Каждый элемент ассоциированного массива "Scripting.Dictionary" имеет ключ и значение.
Для добавления элемента к массиву используется метод Add:

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

Set List = CreateObject("Scripting.Dictionary")
List.Add Key1, Value1
List.Add Key2, Value2
Поэтому запись "EXT.List "бла", """ мне совершенно непонятна.
Если необходимо найти значение элемента массива по ключу, который содержится в некой переменной, то используются конструкции вида:

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

MyVar = "бла"
Set List = CreateObject("Scripting.Dictionary")
List.Add "бла"   , "Значение 1"
List.Add "блабла", "Значение 2"
If List.Exists(MyVar) Then
  MsgBox "По ключу """ & MyVar & """ найдено значение """ & List(MyVar) & """"
Else
  MsgBox "По ключу """ & MyVar & """ ничего не найдено"
End If
Здесь List(MyVar) возвращает значение элемента ассоциированного массива List по ключу MyVar.

Добавлено: Вт ноя 23, 2010 15:17
Flasher
Batya писал(а):Поэтому запись "EXT.List "бла", """ мне совершенно непонятна.
Пардон, поправил. В темпе делал, не ту часть поменял.
Batya писал(а):Здесь List(MyVar) возвращает значение элемента ассоциированного массива List по ключу MyVar.
Хм. Довольно просто. А я в цикл пихал то же самое, откуда глюки и возникли. Только мне не нужно искать значение ключа, мне нужно искать сам ключ, совпадающий со значением переменной, поэтому я и ставлю пустые значения "".

Добавлено: Вт ноя 23, 2010 15:57
Batya
Flasher писал(а):Только мне не нужно искать значение ключа, мне нужно искать сам ключ, совпадающий со значением переменной

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

If List.Exists(MyVar) Then MsgBox MyVar

Добавлено: Вт ноя 23, 2010 16:13
Flasher
Это не то. Я же написал
Flasher писал(а): то используем найденное значение из списка в каком-нибудь последующем методе
Т.е., если перефразировать, то - найденный ключ, но вовсе не значение переменной.
Хотя это даёт один и тот же результат, всё-таки хотелось бы узнать, каким способом выдернуть этот найденный ключ? Это нужно в случае, когда из этого ключа будет браться только его синтаксический кусок, в то время как из значения переменной его выделить не получится.

Добавлено: Вт ноя 23, 2010 22:24
Batya
Flasher
Ничего не понял. А можно более предметно описать задачу?

Добавлено: Вт ноя 23, 2010 22:35
Flasher
Ну, не знаю, к примеру:

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

D = "D:\"
C = "C:\"
Set List = CreateObject("Scripting.Dictionary") 
List.Add  WScript.Arguments(0), ""
List.Add  WScript.Arguments(1), ""
If List.Exists(D) And List.Exists(C) Then MsgBox (Найденный ключ аля C) & vbnewline & (Найденный ключ аля D)

Добавлено: Ср ноя 24, 2010 11:47
Batya
Flasher
Опять не понял. Что значит "Найденный ключ аля C", если C - это и есть ключ?
Итак, есть массив. Т.к. в массиве заданы только ключи, то можно сказать, что это список ключей.
Проверяем, есть ли некоторый ключ в этом списке.
Дальше что?