Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Предыдущие топики:  1 2 3 4
 
Где взять последнюю версию?
На странице загрузки скачайте MSI-инсталлятор стабильной сборки нужной вам разрядности (32 или 64 бита) или дистрибутив в виде 7z-архива и установите/распакуйте в любую папку (FAR портабелен и может работать без установки).
Там же на свой страх и риск можно взять наиболее свежую "ночную" сборку (в ночных сборках устраняются выявленные недоработки, добавляются новые функции, но могут содержаться и серьёзные ошибки).
Архив всех предыдущих ночных сборок FAR
Last release на github - собирается практически сразу (в течение получаса) после каждого коммита.
 
Общие сведения о совместимости FAR и плагинов
 
Можно воспользоваться одной из пользовательских сборок FAR Manager
Вопросы, касающиеся сборок, следует задавать непосредственно их авторам, а не на официальном форуме.
 
Где взять дополнительные плагины, скрипты и макросы?
Плагринг. В настоящее время большинство авторов (возможно, уже и все) выкладывают плагины здесь. Кроме плагинов здесь появляется всё относящиеся к FAR: дополнения, консольные шрифты, скрипты и пр.
Анонсы плагинов на официальном форуме. Даже если автор не выкладывает по каким-либо причинам плагин на плагринге, он может дать анонс в этой теме.
Полезные скрипты и макросы.
 
Инструкции по сборке ФАРа из исходников
Набор для самостоятельной сборки ФАРа
Как собрать FAR самостоятельно (старая инструкция)  
 
Ссылки на устаревшие версии
Выдержка из Far Manager Site and Forum ‹ FAQ :
Отличия FAR 3 от FAR 2
Отличия FAR 2 от FAR 1.7
 
Примечания
 
* 13 декабря 2008 г. произошло переименование веток: ANSI-ветка 1.71 превратилась в 1.75, а Unicode-ветка получила номер версии 2.0 (вместо 1.80). Т.е. версии 1.хх это ANSI ("старый" FAR), а версии 2.хх – Unicode ("новый" FAR). Эти ветки сильно различаются по способу взаимодействия с плагинами и системой!
* При обновлении ANSI-ветки 1.хх более старые версии плагинов могут работать в более новом FAR, но более новые плагины в большинстве случаев требуют обновления FAR (см. документацию).
* Unicode-плагины в ANSI-версии FAR не работают – у них иной способ взаимодействия (API) с Far.exe, поэтому даже не пытайтесь их использовать в FAR версии ниже 1.80.
* При обновлении Unicode-версии FAR 1.80/2.0/3.0 обращайте внимание на номер сборки: следует обязательно обновить все плагины для сборок 677/680/684, иначе они не будут работать. ANSI-плагины (кроме тех, которые работают в редакторе) можно применять в Unicode-версии FAR, в меню плагинов (вызываемом по F11) они будут помечены значком [A] справа от их имени. Unicode-плагины в FAR 1.80/2.x/3.х никаким значком после имени не помечаются.
* Unicode-версия FAR 1.80/2.x/3.х требует как минимум Windows 2000, т.е. она работает только в Windows 2000/XP/2003/Vista/2008/7/8/10.
* Плагины от FAR 2 несовместимы с FAR 3 и не запустятся.
* В FAR 3 выборочно могут работать плагины от FAR 1, однако не стоит брать от FAR 1 плагины для редактора или работающие с дисками: первые портят текст в Юникоде, вторые – файловую систему.
* В любом случае разрядность плагинов должна совпадать с разрядностью FAR, иначе плагин не будет загружен.
* Блондинку на скриншоте зовут Tommie Jo.

 
Принципиальные различия между hard link, symlink и junction
Как устранить взаимное влияние запущенных копий FAR в памяти
Как запустить Lua/MoonScript из FAR
Как правильно добавить в программу нужную DLL (или иную зависимость), чтобы при обновлении ОС или иных программ она не перестала работать
Патч для ansi-плагинов для хранения настроек плагинов в папке профиля, а не в реестре
Как распаковать UUE/XXE файлы патчей и использовать их?
 
ВНИМАНИЕ!
 
Правильное (корректное) завершение Far: всегда завершайте сеанс работы с Far по F10! Подробнее на форуме - Различие выхода из Far по F10 и крестиком
 
Общие правила обращения за помощью
  1. Решаете задачу самостоятельно, при необходимости ищете ответы в теме и других источниках. Предварительное изучение документации обязательно!
  2. Если ваших знаний не хватает, то задаёте вопрос в форуме и строго следуете инструкциям тех людей, которые вам помогают.
  3. Если решить задачу, следуя пунктам 1 и 2, не удалось, то задаёте вопрос разработчикам.

Невыполнение этих правил ведёт к тому, что никто не станет помогать решать вашу задачу.

Всего записей: 36031 | Зарегистр. 26-02-2002 | Отправлено: 18:55 23-11-2017 | Исправлено: Victor_VG, 10:00 09-09-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Официальные дистрибы же распаковываются и без профиля

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 21:25 05-08-2019
skipik



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня тоже не повторяется.

Всего записей: 3008 | Зарегистр. 07-07-2006 | Отправлено: 21:32 05-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 

Цитата:
1.8 фикс в кондишн

 
Макрос, скопированный из 15:23 05-08-2019, всё так же стабильно роняет Фар при запуске на двух файлах 0-размера.
 
Т.к. краш происходит без вывода сообщения о том, что файлы нулевые, полагаю вероятным, что не срабатывает предназначенная для этого проверка, и макрос сразу переходит к вызову плагина.
 
Добавлено: Если выделить на панели файл нулевого размера, установить на него курсор и вызвать макрос, то ожидаемо выдаётся сообщение: "it's the same object" и макрос прекращает работу без опрокидывания Фара. Т.е. в этом случае проверка нормально срабатывает.  

Всего записей: 249 | Зарегистр. 26-06-2016 | Отправлено: 21:49 05-08-2019 | Исправлено: citPiks, 22:07 05-08-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks, значит детект размера не работает почему-то, поставьте перед return res far.Message(res,"") - что он выдаёт на нулевых файлах?

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 22:15 05-08-2019 | Исправлено: Alexyz21, 22:17 05-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
поставил в строке 29:
 
far.Message(res,"") return result
 
выдаёт nil
 
Дополнено:
 
поставил в строке 113:
 
far.Message(res,"") return res
 
выдаёт false

Всего записей: 249 | Зарегистр. 26-06-2016 | Отправлено: 22:27 05-08-2019 | Исправлено: citPiks, 22:35 05-08-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks, там же result, а не res - на 113-ой нужно ставить. А если на 111-ю, и посмотреть fh? Лучше даже far.Message(fh:read(1),"") - что выводит, первый символ в файле?

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 22:32 05-08-2019 | Исправлено: Alexyz21, 22:43 05-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
на 113-ой нужно ставить

Исправился. См. постом выше.
 
 
Добавлено:
Alexyz21
 
Дико извиняюсь! Наконец то нашёл в чём дело!  
В суете (без отрыва от производства) нечаянно вводил себя и Вас в заблуждение вот в чём:
 
выставлял курсоры на порожние файлы, но с BOM! и плагин валил Фар.

Всего записей: 249 | Зарегистр. 26-06-2016 | Отправлено: 22:36 05-08-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это можно закостылить, как и пустые, например так:
Подробнее... - проверьте, отпишитесь.
 
UP. Вылезли нюансы, например читаем 4 байта из "\239\187\191\239" и lua считает что они ==bom %) VC на таких кривых бомах уже не падает, поэтому защищаться от них нет нужды, изменил функцию защиты, защищаясь уже и от lua )))

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 22:54 05-08-2019 | Исправлено: Alexyz21, 00:04 06-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 

Цитата:
это можно закостылить, как и пустые

 
Большое спасибо! С удовольствием пользуюсь Вашим макросом.
 
Добавлено:
Alexyz21
 

Цитата:
проверьте, отпишитесь

 
Так совсем хорошо и с реально нулевыми, и с пустыми, но с BOM.

Всего записей: 249 | Зарегистр. 26-06-2016 | Отправлено: 23:08 05-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Вылезли нюансы, например читаем 4 байта из "\239\187\191\239" и lua считает что они ==bom %)

И правильно считает, потому что первые 3 байта из этих 4-х есть UTF-8 BOM, а все последующие байты уже не имеют значения, ибо следуют после BOM'а и рассматриваются как собственно содержимое файла.
 
Если вы утверждаете, что Lua "режет" все 4 байта - будьте добры предоставить пример.

Всего записей: 1040 | Зарегистр. 09-03-2012 | Отправлено: 01:17 06-08-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks
Alexyz21
 
Ребята! Вот вам тест-пакет - https://www.upload.ee/files/10319914/Test.7z.html .  
 
Файлы в архиве:
 
Warning1.txt - UTF-16 LE (CP-1200), BOM (0xFEFF), пустой, размер 2 байта
Warning2.txt - UTF-16 BE (CP-1201), BOM (0xFEFF), пустой, размер 2 байта
readme - UTF-8 (CP-6501), USC2 (0xEFBBBF), пустой, размер 3 байт
readme.txt - кодировка любая, размер 0 байт
test.nsi - UTF-8 (CP-65001), без USC2 (метка UNICODE часто путают с BOM, хекс 0xEFBBBF), размер 290 байт
version - ANSI (CP-1251), размер 4 байта
whatsnew.txt - ANSI (CP-1251), размер 4 байта

 
Я на них проверял. А так как маркер UNICODE для UTF-8 и UTF-16/UTF-32 различается, то учтём это дополнив фикс:

Код:
    local function checksz0(f)
      local res=false
      if not win.GetFileInfo(f).FileAttributes:find("d") then
        local ucs2,bom="\239\187\191","\254\255"
        local fh=io.open(f,"rb")
        local fl=fh:read(4) or ""
        if fh then res=((string.len(fl)==3 and fl==ucs2) or (string.len(fl)==2 and fl==bom) or fh:read(1)==nil) fh:close() end
      end
      return res

P.S.
 
У меня на b5443 Git-dedef2db5 :  
 
x64 - не падает,  
х86 - vc: readme readme.txt -> тут AV, плагин улетел в отладчик, жду завершения загрузки символов с мелкомягких ...


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 24198 | Зарегистр. 31-07-2002 | Отправлено: 01:26 06-08-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, дождался отработки загрузки и посмотрел в отладчике где падает VisComp.dll при сравнении файлов нулевого размера? Отладчик вывел диагностику:
 
Необработанное исключение по адресу 0x014276A5 в Far.exe:  
 
0xC0000005: нарушение прав доступа при чтении по адресу 0x00000018.

 
- прикладная программа пытается читать по адресу 0x00000018 из диапазона адресов 0х00000000 - 0х0000ffff - области векторов прерываний, что вызвало срабатывание схем контроля ЦП с кодом исключения 0xC0000005.  
 
По листингу дизассемблера видно, что в одном из потоков Far.exe происходит переполнение ALU при выполнении операции сложения адресов и в регистр EAX пишется значение 0xfffffffe которое после используется в качестве адреса чтения данных.  
 
При этом в списке запущенных DLL плагинов отладчик не показал VisComp.dll, зато регистр EAX для плагинов Drag&Drop и FarHints так же был испорчен - помечен красным, что означает, что процесс VisComp.dll к моменту срабатывания отладчика "успешно" завершился, но следуя логике "падаешь сам - урони родителя" успел вызвать AV в основном процессе Far.exe.  
 
В такой ситуации ОС обязана вывести диалог с сообщением о сбое и затем позвать TerminateProcess() для аварийного завершения сбойной задачи. Что она и сделала.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 24198 | Зарегистр. 31-07-2002 | Отправлено: 05:12 06-08-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
checksz0 Подробнее..., но похоже без лечения плагина не обойтись - падает, например, при сравнении  файлов "\239\187\191\239" и "" - т.е. защититься во всех случаях не получится, так как падает при сравнении пустышек после конвертации, а конверторы трактуют целое множество строк как пустышки, а не исключительно бомы. Хотя... если конвертировать самому и сравнивать уже результат конверсии, но как-то мутно получается... Добавил защиту от чистых бомов.
 
Обратите внимание на заголовок, выводимый  far.Message по lua:far.Message("","\239\187\191"), ожидается, что он будет пустым и рамка сомкнётся, как и в случае с выводом "", но это не так.

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 08:39 06-08-2019 | Исправлено: Alexyz21, 08:54 06-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 

Цитата:
Добавил защиту от чистых бомов.

 
Вариант макроса от 08:52 06-08-2019 на моём материале работает так как надо. Спасибо!
 
Попробовал для интереса на тест-пакете от VG:  
 
Если один из сопоставляемых файлов тестовый Warning1.txt, а второй файл реально порожний или порожний с BOM, то FAR крашится. С Warning2.txt такого нет.

Всего записей: 249 | Зарегистр. 26-06-2016 | Отправлено: 11:39 06-08-2019 | Исправлено: citPiks, 11:50 06-08-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Берём любой бом, добавляем к нему 1 произвольный байт и сравниваем с пустым файлом, или подобным, или с пустым бомом и плаг будет падать, если же попытаться защититься от любых подобных крашей, то как быть с двоичными файлами, которые содержат такие байты? - Ведь это могут быть файлы и 4-5-6 байт, дальше не экспериментировал - надоело. Плаг нужно фиксить.

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 12:19 06-08-2019 | Исправлено: Alexyz21, 12:22 06-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 

Цитата:
Плаг нужно фиксить.

 
Для моих нужд того состояния макроса, которое сейчас, вполне достаточно.
 
По тестовым файлам информация приведена мною лишь для пущего сведения.
 
Если у автора плагина найдутся возможности его поправить, будет ещё лучше. Но заглядывает ли он сюда?

Всего записей: 249 | Зарегистр. 26-06-2016 | Отправлено: 12:49 06-08-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неожиданностью явилось то, что FEFF='\255\254', а не '\254\255'. На 105-й обновил.

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 14:00 06-08-2019 | Исправлено: Alexyz21, 14:33 06-08-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks
 
При создании warning1.txt и warning2.txt задавались разные кодировки 1200 (UTF-16 BE,  "Motorola" и 1201 (UTF-16 LE, "Intel"), но т.к. поле DATA (байты с 3 до конца файла) в них имеет длину 0 байт, то по факту это редкий  
случай бинарно-одинаковых файлов.  
 
Alexyz21
 
У меня твой  пример:  

Код:
lua:local feff="\254\255" local h=io.open("Z:\\TEMP\\1","rb") local f=h:read(4) io.close(h) far.Message(f==feff,'type='..type(f)..' len='..string.len(f)..' byte1='..string.byte(1)..' byte2='..string.byte(2))  

выводит иную картинку:
 
   
 
потому одно из двух: либо у нас что-то локальное искажает ход его исполнения, либо на нём скрытая ошибка вылезла.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 24198 | Зарегистр. 31-07-2002 | Отправлено: 14:44 06-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разгадка в том, что вьювер в режиме HEX-просмотра неправильно показывает BOM UTF-16LE (переставляет 1-й и 2-й байты). Похоже, это баг вьювера.

Всего записей: 1040 | Зарегистр. 09-03-2012 | Отправлено: 14:53 06-08-2019
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG, там глаз замылился - должно быть string.byte(f,1), string.byte(f,2). на 105-й поправил имя переменной.
 
Добавлено:

Цитата:
Разгадка в том, что вьювер в режиме HEX-просмотра неправильно показывает BOM UTF-16LE (переставляет 1-й и 2-й байты). Похоже, это баг вьювера.

Точно - смотрел в hiew и не обратил внимания.

Всего записей: 1794 | Зарегистр. 16-06-2007 | Отправлено: 15:44 06-08-2019 | Исправлено: Alexyz21, 15:53 06-08-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru