Страница 81 из 130

Добавлено: Ср май 28, 2014 10:37
sa
В 400-x бетах в секции макросов TCFS2.ini пропал(?) locktc=msg($0B, #1-0 > 0 ? 0 : 1, 0).

Добавлено: Ср май 28, 2014 11:59
MVV
Спасибо за замечание, я видел, что он куда-то пропал, и уже вернул его.

Выложил последюю версию.

TCFS2 2.2.0.444 (изменения с версии 2.1.0.394):
+ функция loop
+ специальная обработка двойных кавычек в командной строке: внутри косых строк они игнорируются
+ функции varcnt, varget, varset
+ режим передачи точных строк для функции send

+ сложные строки, которые формируются из множества строк и вычисляемых числовых значений
* предупреждение о конце строки при чтении параметров функций

Добавлено: Вс июн 01, 2014 17:46
790
TCFS2 2.2.0.444
скачка блокируется как вирусная угроза и бла-бла-бла :cry:

Добавлено: Вс июн 01, 2014 17:53
MVV
Что я могу поделать, умом писателей антивирусов обделили, считают себя умными и на компромиссы не идут (общался уже с поддержкой NOD, если интересно, поищи в теме).

Вот анализ с VirusTotal, большинство (в том числе самые известные) согласны, что ничего нет.

Добавлено: Чт июн 05, 2014 10:34
sa
Как в кнопке

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "if(tcini(TCFS2, ColorOff, 0, 0), set_tcini(Colors, ColorFilter2, `>Выкл Файлы не старше 1 часа`)+set_tcini(TCFS2, ColorOff, 1), set_tcini(Colors, ColorFilter2, `>Файлы не старше 1 часа`)+set_tcini(TCFS2, ColorOff, 0)) tcm(494, 1) delay(200) send(`+{TAB 5}  {ENTER}`, findwnd(`TDLGCONFIGALL`))"
wcmicons.dll,20
Подсвечивание файлов не старше 1 часа: вкл/выкл


-1
обойтись без создания дополнительного числового ключа (секция [TCFS2], ключ ColorOff)?
Другими словами, как сравнить нечисловые значения из tcini?

P.S. В кнопке используется значение фильтра из секции [Colors] wincmd.ini

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

ColorFilter2=>Файлы не старше 1 часа

Добавлено: Чт июн 05, 2014 18:52
MVV
На данный момент TCFS2 не позволяет сравнивать строки, только записывать.

Пришло в голову следующее извращение: использовать уникальные цвета. Как вариант, младший бит значения цвета устанавливаешь в 1, когда фильтр включён, и в 0, когда выключен. Проверить легко, на глаз отличить крайне сложно (надо иметь крайне острое зрение и крайне дорогой монитор, чтобы различать 254 и 255).

Зная цвет, можно даже не привязываться к номеру шаблона, а делать цикл, в котором искать этот цвет (считывать `ColorFilter` номер `Color` и сравнивать с цвет&~1, чтобы игнорировать младший бит), и переключать найденный шаблон. Так можно находить множество шаблонов, даже если цвета одинаковые (просто слегка изменять оттенки: $01, $0100, $010000 - это младшие биты трех цветовых компонент, итого имеем 3 флага под свои нужды, а если задействовать ещё и следующие биты, то ещё больше - и опять же, при почти неотличимых оттенках).

Добавлено: Чт июн 05, 2014 21:58
Flasher
Не, рубятушки, тут всё проще.

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

/ef "if(tcini(Colors,ColorFilter2,#),set_tcini(Colors,ColorFilter2,`>Последние 5 минут`),set_tcini(Colors,ColorFilter2,0)) tcm(494,1) eval(send_wait(`{TAB 5}  {ENTER}`,findwnd(`TDLGCONFIGALL`)))"
только TCFS2 спотыкается на > и с пробелами в такой записи не дружит (я их поубирал везде).

Добавлено: Чт июн 05, 2014 22:23
MVV
Flasher писал(а):только TCFS2 спотыкается на > и с пробелами в такой записи не дружит (я их поубирал везде).
Это уже баг. У меня тут зачем-то вызывается вычислитель выражения вместо банального преобразования строки в число. Можешь представить, какое выражение ему приходилось обрабатывать... И никому раньше такая ерунда не приходила в голову. :D

TCFS2 Build 446

Исправил чтение числа, теперь читает до первой не-цифры. В вашем случае при шаблоне всегда будет не-цифра, т.е. число всегда будет 0, поэтому для возможности сравнения необходимо записывать туда любое ненулевое число, которое будет означать, что шаблон отключён.

Добавлено: Чт июн 05, 2014 23:56
sa
MVV писал(а):На данный момент TCFS2 не позволяет сравнивать строки, только записывать.
В таком случае и с дополнительным числовым ключом не так уж накладно будет использовать кнопку.

Добавлено спустя 45 минут:
tcini(<section>, <key>, <value>|`<string_value>`, [<error_value>], [<use_redirection>])
Здесь (1.1. Supported functions) |`<string_value>` - наверное, опечатка.

Добавлено: Пт июн 06, 2014 00:31
Flasher
MVV писал(а):Можешь представить, какое выражение ему приходилось обрабатывать...
Приблизительно. :)
MVV писал(а):поэтому для возможности сравнения необходимо записывать туда любое ненулевое число
Фигня в том, что как раз нулевое нужно (если я правильно понял - куда). :roll:

Добавлено: Пт июн 06, 2014 01:08
MVV
sa,
Да, в английском варианте упустил, в русском правильно написано.

Flasher,
Тебе главное - различать шаблон и пустышку. А где какое число, без разницы. Если шаблон читается как нулевое число, вместо пустышки указывай ненулевое, и будет тебе счастие. :) Проверяешь, ноль ли, если ноль, значит, надо записать не ноль, иначе - записать шаблон. Вообще, по идее в фильтр надо не 0 записывать, а что-то более уникальное, т.к. это значение потом будет служить маской и искаться в именах файлов. Подойдёт что-нибудь вроде 1293721. :)

Добавлено: Пт июн 06, 2014 04:23
Flasher
MVV писал(а):если ноль, значит, надо записать не ноль, иначе - записать шаблон.
Я правильно понимаю, что всё утыкается в текстовое значение, которое воспринимается как 0?
MVV писал(а):по идее в фильтр надо не 0 записывать, а что-то более уникальное, т.к. это значение потом будет служить маской и искаться в именах файлов.
Что ты понимаешь под фильтром? 0 записывается вместо названия шаблона (значение ключа). Вот я и пишу, что тут другой вариант не проходит.

Добавлено: Пт июн 06, 2014 18:57
MVV
Я правильно понимаю, что всё утыкается в текстовое значение, которое воспринимается как 0?
Да. Если значение начинается не с цифры, оно воспринимается как 0.
Что ты понимаешь под фильтром? 0 записывается вместо названия шаблона (значение ключа). Вот я и пишу, что тут другой вариант не проходит.
Ключ называется ColorFilter2 - вот и фильтр. :) Правильное значение фильтра содержит значение вида ">ИмяШаблона", которое воспринимается как 0, а своё неправильное ты волен начать любым отличным от 0 числом, и далее можно приписать любую абракадабру, чтобы тотал ни один файл не подсветил этим фильтром. Вчера мне пришло в голову только уникальное числовое значение, а сейчас я вижу, что можно вообще любое, лишь бы начиналось с цифры, отличной от 0. Твой пример на новый лад:

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

/ef "if(!tcini(Colors,ColorFilter2,#),set_tcini(Colors,ColorFilter2,`>Последние 5 минут`),set_tcini(Colors,ColorFilter2,`7хрюнделей`)) tcm(494,1) eval(send_wait(`{TAB 5}  {ENTER}`,findwnd(`TDLGCONFIGALL`)))"

Добавлено: Пт июн 06, 2014 23:10
Flasher
Чего-то не срабатывает if..

Добавлено: Пт июн 06, 2014 23:22
sa
Flasher
+{TAB 5}