Программы, отправляющие результат своей работы на временную панель
Программы, отправляющие результат своей работы на временную панель
buniak_a_h
На ру-борде обнародованы два очень полезных макроса, создающих бранч-списки:
Make file list (автор shmuz2) — создаёт перечень полных имён файлов;
@ Filter Duplicates FileName in Editor (автор Alexyz21) — создаёт расширенный список с дополнительной информацией об атрибутах и размерах файлов. Данным макросом также можно произвести дальнейшую обработку файл-списка по ряду параметров.
И, если это возможно, приведите, пожалуйста, ссылки на используемые Вами утилиты по работе с временной панелью.
На ру-борде обнародованы два очень полезных макроса, создающих бранч-списки:
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: Исправлен заголовок Темы; добавлена ссылка на исходную Тему.
Reason: Исправлен заголовок Темы; добавлена ссылка на исходную Тему.
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
TmpPanel: Temporary Panel — Временная панель
Во вложении две программы (Bad и Good); вторая - исправленная Суть программы - поиск записи в БД, удовлетворяющей условию, написанному на языке DBase, а также составление списка файлов, содержащих такие записи, или целиком удовлетворяющих условию (ключ /F) в текущем каталоге и подкаталогах (ключ /R). Во вложении "выжимка" из FarMenu.ini для реализации запросов. Примеры запросов здесь:sToLp wrote:buniak_a_h
И, если это возможно, приведите, пожалуйста, ссылки на используемые Вами утилиты по работе с временной панелью.
Кстати, эта же программа может быть использована и для выборочной модификации записей. В качестве условия поиска надо записать выражение типа
iif(Code=='10202058',FieldPVal('TTT','qwe'),.F.)
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
Программы, отправляющие результат своей работы на временную панель
buniak_a_h
Судя по меню пользователя, применяемому в FinDB Example, в нём Вы употребляете оператор перенаправления потока "<". А он без перехода на кодовую страницу 65001 неверно передаёт юникодные символы в именах файлов. Из-за этого отдельные файлы могут не попадать на временную панель. Расскажите, пожалуйста, как Вы с этим справляетесь?
Судя по меню пользователя, применяемому в FinDB Example, в нём Вы употребляете оператор перенаправления потока "<". А он без перехода на кодовую страницу 65001 неверно передаёт юникодные символы в именах файлов. Из-за этого отдельные файлы могут не попадать на временную панель. Расскажите, пожалуйста, как Вы с этим справляетесь?
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Программы, отправляющие результат своей работы на временную панель
Можно примеры файлов (имена)? Я добавил ко всем именам файлов слово "Переименованный " - ничего не сломалось. Т.е. русских имен недостаточно, чтобы сбить процедуру с толку.sToLp wrote:buniak_a_h
Судя по меню пользователя, применяемому в FinDB Example, в нём Вы употребляете оператор перенаправления потока "<". А он без перехода на кодовую страницу 65001 неверно передаёт юникодные символы в именах файлов. Из-за этого отдельные файлы могут не попадать на временную панель.
1. Программа предназначена для поиска в таблицах *.dbf. Это - очень старый формат, исторически предназначенный для работы 16-разрядных программ, написанных для MS DOS (как правило, на языке Clipper. Собственно, Harbour, на котором теперь написана эта программа - наследник Clipper-а, и не работает с файлами, содержащими в имени юникодные символы типа «©»). А следовательно, файлы в большинстве удовлетворяют стандарту 8.3sToLp wrote:Расскажите, пожалуйста, как Вы с этим справляетесь?
2. Программа была разработана ещё для FAR 1.75. Там проблем не было...
3. Кстати! При попытке открыть результирующий файл в редакторе FAR 3.0.4655 автоматически выбирается кодировка 1253 - Кириллица. С какого перепуга - вопрос к разработчикам ФАРа; там гарантированно нет ни одного спец. символа, хотя редактор пишет что-то другое:
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Программы, отправляющие результат своей работы на временную панель
sToLp
Я нашёл "странность" редактора ФАРа: при наличии в файле буквы "к" кодировка OEM не распознаётся автоматически. Не знаю, имеет ли смысл рассказать об этом разработчикам...
Я нашёл "странность" редактора ФАРа: при наличии в файле буквы "к" кодировка OEM не распознаётся автоматически. Не знаю, имеет ли смысл рассказать об этом разработчикам...
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
Программы, отправляющие результат своей работы на временную панель
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Программы, отправляющие результат своей работы на временную панель
Ну, извините. Да вообще эта тема к этому форуму (и вообще к ФАРу) отношения не имеет. Просто воспитание требовало ответить - вот и случилась.
В этой теме тоже одни вопросы. Видимо, проблемы кодировки разработчиков уже не интересуют.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
Программы, отправляющие результат своей работы на временную панель
Осмысленные вопросы интересуют.
Офтопик с оттенком истерики нет.
Программы, отправляющие результат своей работы на временную панель
На ру-борде примерно с этого поста прошло обсуждение, там приведены и примеры и определена причина — виновато перенаправление "потока" (оператор <), а также появилось и решение:
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
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Программы, отправляющие результат своей работы на временную панель
sToLp
Спасибо.
Видимо достаточно просто перед командой
Спасибо.
Видимо достаточно просто перед командой
tmp:< FinDB32 ...
вставить строку chcp 65001
. К сожалению, проверить это именно на FinDB32 пока невозможно, т.к. сама программа не работает с файлами, содержащими в имени юникодные символы. Проверил на команде tmp:< dir /b
- срабатывает замечательно. Правда, кодовая страница изменяется на постоянно, что может оказаться плохо... Надо запоминать и восстанавливать как-то.Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
Программы, отправляющие результат своей работы на временную панель
Так выше же постом специально для этого приведены три варианта команды Dir. Третий вариант с восстановлением кодовой страницы, а два первых в текущей консоли её и не меняют, поскольку запускаются во временной другой. Почитайте подробнее на ру-борде, там же ссылка есть.
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Программы, отправляющие результат своей работы на временную панель
Требуется заключать строку в двойные кавычки. А в самой команде критерий поиска также обязательно заключать в кавычки. Как это помирить - я не знаю, не настолько знаком с языком cmd.
В принципе, если не заморачиваться с запоминанием, а просто по окончании работы переключать на 866, то можно также просто добавить в конец пункта ещё строкуsToLp wrote:Третий вариант с восстановлением кодовой страницы, а два первых в текущей консоли её и не меняют, поскольку запускаются во временной другой. Почитайте подробнее на ру-борде, там же ссылка есть.
chcp 866
.Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
Программы, отправляющие результат своей работы на временную панель
buniak_a_h
А не пробовали просто поменять в примерах команду Dir на Вашу программу и вывод не в файл указать, а сразу на временную панель? Типа:
Отпишитесь, пожалуйста, работает это или как? И, между прочим, в какой оси Вы программы запускаете? Потому, что в Win10x64entRu они не запускаются.
А не пробовали просто поменять в примерах команду 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"
- buniak_a_h
- Posts: 4268
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Программы, отправляющие результат своей работы на временную панель
1. Как я уже писал, выражение для поиска обязательно должно быть заключено в кавычки. В частности, там могут присутствовать пробелы и символы "<" и ">". А как указать двойные кавычки, входящие в строку, заключённую в двойные кавычки, я не знаю.sToLp wrote:
Отпишитесь, пожалуйста, работает это или как? И, между прочим, в какой оси Вы программы запускаете? Потому, что в Win10x64entRu они не запускаются.
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: Спрятан оверквотинг
Reason: Спрятан оверквотинг
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
Программы, отправляющие результат своей работы на временную панель
Насколько я понимаю, в одинарные кавычки, и наоборот.buniak_a_h wrote: 1. ... как указать двойные кавычки, входящие в строку, заключённую в двойные кавычки ...
Смотря какая информация относится к лишней. Макрос авторства Alexyz21 в первом посте, например, на первом этапе создаёт бранч-список, в котором в первых двух колонках указаны атрибуты и размеры, а в третьей — полные имена файлов. И опираясь на эту дополнительную информацию обрабатывает список дальше. А макрос авторства shmuz2 создаёт список стандартного содержания только из полных имён файлов. Зато, конечно, побыстрее и всеядно для временных панелей.2. Мою программу пришлось немного переделать: научить работать с юникодными именами файлов и добавить ключ, требующий только вывод имён файлов (без "лишней" информации).
Принцип тот же.3. Пункт меню работает почти по типу (3) только вместо указания трёх команд через "&" указал три строки
У меня интерес в данном случае тоже чисто академический. И я сомневаюсь, что программа вдруг начнёт работать из под Win10. Если только кому нибудь ещё интересно будет.Если вопрос интересует, могу обновить вложение...
У меня Windows XP. При необходимости можно собрать 64-разрядную версию.