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

Добавлено: Пн дек 21, 2015 12:55
Skif_off
MVV писал(а):Ничего не сделаешь, не поддерживаются пути с '`'.
А почему? В запрещённых символах только двойные кавычки `"`.

Добавлено: Пн дек 21, 2015 13:38
Flasher
MVV писал(а):Возможно, стоит сделать этот эскейп-символ настраиваемым...
Может, двойной символ сгодится?
sa писал(а):Если часть включает конец панели инструментов, то вроде как можно.
Под средствами TCFS2, я полагаю, имелась в виду работа с окнами, а не конф. файлами. А по ссылке я уже отписался.

Добавлено: Пн дек 21, 2015 16:30
MVV
sa писал(а):Если часть включает конец панели инструментов, то вроде как можно.
Я бы не стал пользоваться таким трюком: если тотал действительно учитывает этот параметр, и ты забудешь переключить панель в полный режим, можно потерять кнопки.
Skif_off писал(а):А почему? В запрещённых символах только двойные кавычки `"`.
Потому что в TCFS2 этот символ обрабатывается особенным образом - он задаёт начало и конец текстового аргумента.
Flasher писал(а):Может, двойной символ сгодится?
Такой фокус не решит проблемы передачи имени с таким символом в качестве параметра, т.к. удваивать его придётся вызывающей стороне. В то же время задание заменителя для этого символа позволило бы тебе выбрать такой символ, который в твоих именах точно не встретится (уж в Юникоде-то таких навалом).

Добавлено: Пн дек 21, 2015 17:06
sa
MVV писал(а):если ... ты забудешь переключить панель в полный режим, можно потерять кнопки.
Если забыть включить вкладки и закрыть ТК, то все вкладки исчезнут. Тем не менее, команда dt0 (отключить вкладки каталогов) имеется в TCFS2.
Так же и с кнопками: если кому-то этот трюк будет нужен, то он не забудет переключить панель в полный режим при её редактировании, а забудет - воспользуется предусмотрительно созданной копией файла панели.

Добавлено: Пн дек 21, 2015 17:30
Flasher
MVV писал(а):т.к. удваивать его придётся вызывающей стороне
Точно. Не сообразил. А искать в качестве замыкающего не следующий, а последний символ в в параметре ты не можешь?

Добавлено: Пн дек 21, 2015 23:18
MVV
sa писал(а):Если забыть включить вкладки и закрыть ТК, то все вкладки исчезнут. Тем не менее, команда dt0 (отключить вкладки каталогов) имеется в TCFS2.
Так же и с кнопками: если кому-то этот трюк будет нужен, то он не забудет переключить панель в полный режим при её редактировании, а забудет - воспользуется предусмотрительно созданной копией файла панели.
Вкладки - это всё-таки стандартный функционал. И мы её и так убрали из fs, кроме того, в TCFS2.ini у этой команды есть предупреждающий комментарий.
А здесь тогда уж лучше сразу делать резервную копию перед переключением. Но всё равно такому извращению не место в стандартной поставке TCFS2.
Flasher писал(а):Точно. Не сообразил. А искать в качестве замыкающего не следующий, а последний символ в в параметре ты не можешь?
А тут нет общего алгоритма. Косая кавычка может быть закрывающей, а может быть и не закрывающей, а после неё в имени могут быть скобки, запятые и т.п... Да и после команды, которой передаётся имя файла, могут быть указаны другие команды, в которых тоже есть косые кавычки.

Добавлено: Пн дек 21, 2015 23:45
sa
MVV писал(а):всё равно такому извращению не место в стандартной поставке TCFS2.
Вот об этом мысли совсем не было.

Добавлено: Вт дек 22, 2015 02:41
Flasher
MVV
ОК. Есть такое дело. Вообще странно, что ты не выбрал какой-то из запрещённых символов (? ; < > |). Первые два не являются мат. операторами. Нельзя там в коде закинуть условие типа If N == ` OR ; , например? Или непосредственно для tcd экранировать всё, что внутри <>, там текст, сравнению не подлежит, к тому же символы разные, а значит, конец легко отделить от начала.

Добавлено: Вт дек 22, 2015 12:02
Skif_off
Flasher писал(а):Или непосредственно для tcd
А как же tem?

Добавлено: Вт дек 22, 2015 12:36
Flasher
Skif_off
Зачем в tem? Там в основном только константы используют. Или есть другие примеры?

Добавлено: Вт дек 22, 2015 18:55
MVV
Вообще странно, что ты не выбрал какой-то из запрещённых символов
Я выбрал такой, который более-менее похож на кавычку, и в то же время является достаточно редким (хотя, конечно, я не принимал в расчёт языки кроме русского и английского). Но если так пошло, то любой символ может потребоваться внутри строкового выражения... Мало ли, захочу записать в INI ColorFilter1=>Autorun, Options1=-1|0 или ещё что-нибудь покруче. :)
А заводить функции-любимчики, для которых готовить отдельно - не самый лучший вариант.

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

Добавлено: Вт дек 22, 2015 20:23
Flasher
MVV писал(а):А заводить функции-любимчики, для которых готовить отдельно - не самый лучший вариант.
Так ты уже завёл. send c @ и ~.
MVV писал(а):Правда, тогда TCFS2.ini надо будет хранить в юникоде.
Ладно бы TCFS2.ini, а bar-ы, usercmd.ini, wcmd_lng.ini, mnu, да и wincmd.ini туда же. Не, лучше всё таки сразу <>, чем все эти ненужности.

Добавлено: Вт дек 22, 2015 23:53
Skif_off
Flasher писал(а):Зачем в tem? Там в основном только константы используют. Или есть другие примеры?
Начиналось всё с пути:
Flasher писал(а):Что делать с tcd, если в пути есть '`'?
из пяти частоиспользуемых em-команд ровно четыре в качестве параметра принимают пути, одна из которых аж два пути.

Добавлено: Ср дек 23, 2015 00:38
Flasher
Skif_off
Наличие путей не отвечает на мой вопрос.

Добавлено: Ср дек 23, 2015 01:06
MVV
Так ты уже завёл. send c @ и ~.
Вот не надо ~ сюда втягивать, она внутри строки парсится. А @ - да, действительно, но там она скорее как дополнительный параметр, строка парсится по общим правилам.
Ладно бы TCFS2.ini, а bar-ы, usercmd.ini, wcmd_lng.ini, mnu, да и wincmd.ini туда же. Не, лучше всё таки сразу <>, чем все эти ненужности.
Ну ты бы мог, скажем, выбрать символ ±... Не ахти какая кавычка, зато редкий.
Мне кажется, что если делать - так делать для общего случая. А то завтра ты (или кто-то ещё) захочешь возможность записывать в INI строки с косой кавычкой...