непонятки с fexist() и fattr()

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

непонятки с fexist() и fattr()

Post by Skirda »

Речь про некоторую кривизну fsplit и fattr, допущенные мною даавным давно. Sorry. :oops:

Во исполнении Mantis#230 подумалось... (речь про пока только готовящийся билд, т.е. опишу как будет)

Тезисы
1. fexist() работает по макске (символы '*' и '?')
2. fattr(), кстати, тоже - но возвращает атрибут "первого найденного" по маске (сделано патаму шта... дабы не плодить код - fexist просто тупо вызывает fattr).
3. если имя начинается с 'X:' или '\\', то считаем, что хотим искать не на активной панели, а по указанному пути.
4. если не п.3, то функции смотрят на активную панель.

Кривизну видим? (хинт - пп.3 и 4).
Идеи есть?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Post by DrKnS »

А как насчет fexist("..\\file.ext") или fexist("dir\\file.ext")?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

Работа в панели.

Потому, что у нас есть уникальный плагин TempPanel, у которого файлы на панели с полным путем.
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

Skirda
Тезисы:
1. кривизнЫ надо исправлять;
2. чем раньше, тем лучше;
3. лучше поздно, чем никогда.
:P

Если бы в макроязыке существовал механизм необязательных параметров (например, сосредоточенных в конце списка аргументов и снабжённых значениями по умолчанию), то можно было бы реализовать такое поведение: добавить в fexist и fattr по необязательному целочисленному параметру со следующими возможными значениями:
-1 — “умное” (smart) поведение (как сейчас; не согласуется со Временной панелью);
0 — работа с реальной файловой системой, безотносительно панелей (относительные пути отсчитываются от текущей папки Фара, т.е. от той же, в которой, например, была бы запущена внешняя программа);
1 — работа с активной панелью (в частности, если передали полный путь, а панель не Временная, то такой элемент заведомо не найдётся);
2 — работа с пассивной панелью (в частности, если передали полный путь, а панель не Временная, то такой элемент заведомо не найдётся).

Сложно ли реализовать необязательные параметры?
Если сложно, то можно оставить fexist и fattr как есть, но добавить fExistEx и fAttrEx уже с двумя параметрами.
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

Если уж говорить о кривизнах, то вся вот эта попытка сделать из линейных клавиатурных макрокоманд нечто тьюринг-полное — извините, одна сплошная кривизна.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

Centaur, никто не говорил (и тем более не обещал), что "кривизна" - это полноценное решение (для этой цели есть АПИ плагиновое).
Если тебе такое расширение макросов не нравится - не юзай, но и не выступай здесь с лозунгами о "сплошной кривизне", ибо сама идея M$ - кривизна.
(отвечать на эти два абзаца ненужно - твою позицию и реакции я предполагаю и это будет флеймом из разряда холиварс + никакой толковой информации не ожидается)

HaRT, идея здравая, но склоняюсь к мысли, что сабжевые функции нужно оставить только для реальных путей, а для панелей добавить аналогичные с префиксами [A|P]Panel.
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

Skirda wrote:сабжевые функции нужно оставить только для реальных путей, а для панелей добавить аналогичные с префиксами [A|P]Panel.
Так даже лучше, чем то, что я предложил — выглядит более ОО. ;)
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

Еще тут подумалось...

FExist с масками, возвращающий угу или не угу - это как бы куда еще... FAttr при тех же условиях...

Ок.
Ну пусть, допустим отработал FExit("d*.rar"), вернул "угу".
Что дальше?

Как теперь понять что за файло было "подхвачено"? (или хрен с ним, все равно эта функция для ответа на вопрос "есть или не есть").

FAttr при тех же условиях (в параметре маска, как побочный эффект)? Информативность и только?
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Post by Andrey Budko »

Валентин, как там уникод? Продвигается?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

У Варпа спрашивай. Он куратор юникодовой ветки.
Кстати, ему нужен доброволец, который бы на каком-нить плагине (плагинах) отлаживал бы АПИ (которое... иногда изменяется). Т.е. как бы нужно быть готовым к тому, чтобы постоянно изменять свой плагин.

Хотя...
Андрей, сейчас лето, пора отпусоков, море, солнце (правда что-то последние 2 дня у нас дожди), дефки в плафках... а ты юникод юникод :-)
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

Skirda
а что по поводу моих мыслей в соседней ветке?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
Post Reply

Return to “Обсуждение макросов”