Программы, отправляющие результат своей работы на временную панель

Здесь обсуждаются темы, косвенно связанные с Far.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Программы, отправляющие результат своей работы на временную панель

Post by sToLp »

buniak_a_h
На ру-борде обнародованы два очень полезных макроса, создающих бранч-списки:

Make file list (автор shmuz2) — создаёт перечень полных имён файлов;

@ Filter Duplicates FileName in Editor (автор Alexyz21) — создаёт расширенный список с дополнительной информацией об атрибутах и размерах файлов. Данным макросом также можно произвести дальнейшую обработку файл-списка по ряду параметров.

И, если это возможно, приведите, пожалуйста, ссылки на используемые Вами утилиты по работе с временной панелью.
Attachments
@ Filter Duplicates FileName in Editor (Alexyz21).lua
(10.73 KiB) Downloaded 184 times
Make file list (shmuz2).lua
(702 Bytes) Downloaded 173 times
Last edited by sToLp on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлен заголовок Темы; добавлена ссылка на исходную Тему.
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

TmpPanel: Temporary Panel — Временная панель

Post by buniak_a_h »

sToLp wrote:buniak_a_h
И, если это возможно, приведите, пожалуйста, ссылки на используемые Вами утилиты по работе с временной панелью.
Во вложении две программы (Bad и Good); вторая - исправленная
FinDB Example.rar
(1.22 MiB) Downloaded 108 times
Суть программы - поиск записи в БД, удовлетворяющей условию, написанному на языке DBase, а также составление списка файлов, содержащих такие записи, или целиком удовлетворяющих условию (ключ /F) в текущем каталоге и подкаталогах (ключ /R). Во вложении "выжимка" из FarMenu.ini для реализации запросов. Примеры запросов здесь:


Кстати, эта же программа может быть использована и для выборочной модификации записей. В качестве условия поиска надо записать выражение типа iif(Code=='10202058',FieldPVal('TTT','qwe'),.F.)
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Программы, отправляющие результат своей работы на временную панель

Post by sToLp »

buniak_a_h
Судя по меню пользователя, применяемому в FinDB Example, в нём Вы употребляете оператор перенаправления потока "<". А он без перехода на кодовую страницу 65001 неверно передаёт юникодные символы в именах файлов. Из-за этого отдельные файлы могут не попадать на временную панель. Расскажите, пожалуйста, как Вы с этим справляетесь?
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Программы, отправляющие результат своей работы на временную панель

Post by buniak_a_h »

sToLp wrote:buniak_a_h
Судя по меню пользователя, применяемому в FinDB Example, в нём Вы употребляете оператор перенаправления потока "<". А он без перехода на кодовую страницу 65001 неверно передаёт юникодные символы в именах файлов. Из-за этого отдельные файлы могут не попадать на временную панель.
Можно примеры файлов (имена)? Я добавил ко всем именам файлов слово "Переименованный " - ничего не сломалось. Т.е. русских имен недостаточно, чтобы сбить процедуру с толку.
sToLp wrote:Расскажите, пожалуйста, как Вы с этим справляетесь?
1. Программа предназначена для поиска в таблицах *.dbf. Это - очень старый формат, исторически предназначенный для работы 16-разрядных программ, написанных для MS DOS (как правило, на языке Clipper. Собственно, Harbour, на котором теперь написана эта программа - наследник Clipper-а, и не работает с файлами, содержащими в имени юникодные символы типа «©»). А следовательно, файлы в большинстве удовлетворяют стандарту 8.3
2. Программа была разработана ещё для FAR 1.75. Там проблем не было...
3. Кстати! При попытке открыть результирующий файл в редакторе FAR 3.0.4655 автоматически выбирается кодировка 1253 - Кириллица. С какого перепуга - вопрос к разработчикам ФАРа; там гарантированно нет ни одного спец. символа, хотя редактор пишет что-то другое:
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Программы, отправляющие результат своей работы на временную панель

Post by buniak_a_h »

sToLp
Я нашёл "странность" редактора ФАРа: при наличии в файле буквы "к" кодировка OEM не распознаётся автоматически. Не знаю, имеет ли смысл рассказать об этом разработчикам...
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

Программы, отправляющие результат своей работы на временную панель

Post by 2useven10 »

buniak_a_h wrote: вопрос к разработчикам ФАРа; там гарантированно нет ни одного спец. символа
buniak_a_h wrote: при наличии в файле буквы "к" кодировка OEM не распознаётся автоматически.
1) здесь это оффтоп.
2) до 'вопросов к' прочтите это
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Программы, отправляющие результат своей работы на временную панель

Post by buniak_a_h »

2useven10 wrote: 1) здесь это оффтоп.
Ну, извините. Да вообще эта тема к этому форуму (и вообще к ФАРу) отношения не имеет. Просто воспитание требовало ответить - вот и случилась.
2useven10 wrote: 2) до 'вопросов к' прочтите это
В этой теме тоже одни вопросы. Видимо, проблемы кодировки разработчиков уже не интересуют.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

Программы, отправляющие результат своей работы на временную панель

Post by 2useven10 »

buniak_a_h wrote: Видимо, проблемы кодировки разработчиков уже не интересуют.
Осмысленные вопросы интересуют.
Офтопик с оттенком истерики нет.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Программы, отправляющие результат своей работы на временную панель

Post by sToLp »

buniak_a_h wrote: Можно примеры файлов (имена)?
На ру-борде примерно с этого поста прошло обсуждение, там приведены и примеры и определена причина — виновато перенаправление "потока" (оператор <), а также появилось и решение:
start /min /wait cmd /c "chcp 65001 & cmd /c dir /b /s /a-d >t.tmp"

start /I /B cmd /c "chcp 65001 & cmd /c dir /b/s/a-d >dirlist.txt"

cmd /c "chcp 65001 & cmd /c dir /b /s /a-d>bra_.tmps & chcp 866"

— … каждый из трёх вариантов команды [dir] выдаёт нормальный юникодный результат и непосредственно из комстроки, и из батника, и из алиаса.
buniak_a_h wrote: При попытке открыть результирующий файл в редакторе FAR 3.0.4655 автоматически выбирается кодировка 1253 - Кириллица.
buniak_a_h wrote: Я нашёл "странность" редактора ФАРа: ... кодировка OEM не распознаётся автоматически.
Решению и того, и другого вопросов должен помочь макрос, подобный этому.
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Программы, отправляющие результат своей работы на временную панель

Post by buniak_a_h »

sToLp
Спасибо.
Видимо достаточно просто перед командой tmp:< FinDB32 ... вставить строку chcp 65001. К сожалению, проверить это именно на FinDB32 пока невозможно, т.к. сама программа не работает с файлами, содержащими в имени юникодные символы. Проверил на команде tmp:< dir /b - срабатывает замечательно. :) Правда, кодовая страница изменяется на постоянно, что может оказаться плохо... Надо запоминать и восстанавливать как-то.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Программы, отправляющие результат своей работы на временную панель

Post by sToLp »

buniak_a_h wrote: Надо запоминать и восстанавливать как-то.
Так выше же постом специально для этого приведены три варианта команды Dir. Третий вариант с восстановлением кодовой страницы, а два первых в текущей консоли её и не меняют, поскольку запускаются во временной другой. Почитайте подробнее на ру-борде, там же ссылка есть.
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Программы, отправляющие результат своей работы на временную панель

Post by buniak_a_h »

sToLp wrote:
buniak_a_h wrote: Надо запоминать и восстанавливать как-то.
Так выше же постом специально для этого приведены три варианта команды Dir.
Требуется заключать строку в двойные кавычки. А в самой команде критерий поиска также обязательно заключать в кавычки. Как это помирить - я не знаю, не настолько знаком с языком cmd. :oops:
sToLp wrote:Третий вариант с восстановлением кодовой страницы, а два первых в текущей консоли её и не меняют, поскольку запускаются во временной другой. Почитайте подробнее на ру-борде, там же ссылка есть.
В принципе, если не заморачиваться с запоминанием, а просто по окончании работы переключать на 866, то можно также просто добавить в конец пункта ещё строку chcp 866.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Программы, отправляющие результат своей работы на временную панель

Post by sToLp »

buniak_a_h

А не пробовали просто поменять в примерах команду Dir на Вашу программу и вывод не в файл указать, а сразу на временную панель? Типа:

Code: Select all

tmp:<start /min /wait cmd /c "chcp 65001 & FinDB32"

tmp:<start /I /B cmd /c "chcp 65001 & FinDB32"

tmp:<cmd /c "chcp 65001 & cmd /c FinDB32 & chcp 866"
Отпишитесь, пожалуйста, работает это или как? И, между прочим, в какой оси Вы программы запускаете? Потому, что в Win10x64entRu они не запускаются.
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Программы, отправляющие результат своей работы на временную панель

Post by buniak_a_h »

sToLp wrote:
Отпишитесь, пожалуйста, работает это или как? И, между прочим, в какой оси Вы программы запускаете? Потому, что в Win10x64entRu они не запускаются.
1. Как я уже писал, выражение для поиска обязательно должно быть заключено в кавычки. В частности, там могут присутствовать пробелы и символы "<" и ">". А как указать двойные кавычки, входящие в строку, заключённую в двойные кавычки, я не знаю.
2. Мою программу пришлось немного переделать: научить работать с юникодными именами файлов и добавить ключ, требующий только вывод имён файлов (без "лишней" информации).
3. Пункт меню работает почти по типу (3) только вместо указания трёх команд через "&" указал три строки:

Code: Select all

    chcp 65001
    tmp: <FinDb32_UTF8.exe !?$FinDB_Mask$Маска файлов?*! "!?$FinDB_Exp$Условие поиска?!" !?$FinDN_Switch$Ключ ( /F(ile), /S(et), /R(ecurce) )?! /L
    chcp 866
Такое работает с файлами типа © Переименовано Cnt_Oto.DBF. Правда, возникает вопрос, что с этим дальше делать. Плугин LookDBF с такими именами не работает, и я не знаю ни одной программы, работающей с такими файлами. Так что конкретно в данном случае интерес чисто академический..
ЗЫ. Если вопрос интересует, могу обновить вложение.
ЗЗЫ.
1. У меня Windows XP. При необходимости можно собрать 64-разрядную версию.
2. Программа ...Bad... - вообще, по-моему, собрана была Clipper - 16-разрядная. Хотя не уверен - очень старая тема.
Last edited by buniak_a_h on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятан оверквотинг
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Программы, отправляющие результат своей работы на временную панель

Post by sToLp »

buniak_a_h wrote: 1. ... как указать двойные кавычки, входящие в строку, заключённую в двойные кавычки ...
Насколько я понимаю, в одинарные кавычки, и наоборот.
2. Мою программу пришлось немного переделать: научить работать с юникодными именами файлов и добавить ключ, требующий только вывод имён файлов (без "лишней" информации).
Смотря какая информация относится к лишней. Макрос авторства Alexyz21 в первом посте, например, на первом этапе создаёт бранч-список, в котором в первых двух колонках указаны атрибуты и размеры, а в третьей — полные имена файлов. И опираясь на эту дополнительную информацию обрабатывает список дальше. А макрос авторства shmuz2 создаёт список стандартного содержания только из полных имён файлов. Зато, конечно, побыстрее и всеядно для временных панелей.
3. Пункт меню работает почти по типу (3) только вместо указания трёх команд через "&" указал три строки
Принцип тот же.
Если вопрос интересует, могу обновить вложение...
У меня Windows XP. При необходимости можно собрать 64-разрядную версию.
У меня интерес в данном случае тоже чисто академический. И я сомневаюсь, что программа вдруг начнёт работать из под Win10. Если только кому нибудь ещё интересно будет.
Post Reply

Return to “Операционные системы, командные оболочки и прочее”