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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

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

AZJIO



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

 

 
скриншот 0 (Описание)
скриншот 1 (Детали поиска RTF)
скриншот 1 (Детали поиска в подсказке)
скриншот 2 (Поиск)
скриншот 3 (Настройки)
скриншот 4 (Сценарии)
скриншот 5 (Многострочный текст)
 
Программа для поиска и замены текста в любых файлах.
 
Поддерживает:
  • Ком-строку
  • Сценарии замены
  • Регулярные выражения
  • Поиск и замену многострочного текста
  • Учитывает атрибуты и кодировку файла
  • Бинарный режим
  • Вывод детального результата с подсветкой
  • Переход к файлу, просмотр и открытие
  • Сохранение прежней даты изменения файла
  • Резервирует изменяемые файлы
  • Многоязычная поддержка
     
    Подробнее в справке на русском языке (F1)
     
    Страничка программы
     
    Скачать (800кб) v 1.1.2 (2.02.2018)

  • Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 05:32 04-02-2012 | Исправлено: AZJIO, 08:04 11-01-2024
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
     
    Опробовал вашу софтину. На самом деле, я обычно применяю более быстрые и продвинутые инструменты для изменения текстовых данных. Напр. TextPipe, PowerGREP, или самописные скрипты под Node.js.
    Конечно, целевая аудитория для вашей программы несколько другая. Это что-то типа однокнопочного инструмента для непритязательных юзеров, которым по-быстрому надо что-то найти и заменить.
     
    В этой связи, если позволите, хотел бы выразить пару пожеланий / рекомендаций.
     
    Для начала те моменты, которые можно считать багами.
     
    1. Здесь уже говорилось о ситуации с созданием TextReplace.ini в папке *\AppData\Roaming\TextReplace. Вы ответили, что это происходит тогда, когда программа не имеет прав записи в папку, из которой запускается. По факту это не так. При первом запуске (из папки, где эта запись, очевидно, возможна), создаётся два файла ini - в самой папке и в AppData. Пробовал оба экзешника и запускал в т.ч. с повышенными привилегиями - результат всегда один.
     
    2. Вытекает из первого. После первого запуска, если произвести настройки, они нигде не сохраняются. Вообще. При втором запуске - всё по дефолту, включая язык и положение окна. Если же, в течение этого второго запуска опять произвести настройку, то они сохраняются в ini, который находится в папке программы. При последующих запусках эти настройки уже подхватываются. А *\AppData\Roaming\TextReplace\TextReplace.ini продолжает жить своей одинокой жизнью.
     
    3. Не большая проблема, но дефолтная минимальная ширина окна недостаточна для того, чтоб отобразить все элементы интерфейса безбажно. В частности поле Add/Добавить подъезжает под кнопку "выводить найдено/ не найдено". Хинт для Add/Добавить как бы перекрывает часть этой кнопки. Это "перекрытие" пропадает если провести поверх указателем мыши. В русском варианте, как бы там ни было, слово Добавить всё равно не помещается в отведённом для него поле, без "подъезда" под упомянутую кнопку. У меня, кстати, дисплей/шрифты не скейлятся. Поэтому это влиять не может.
     
    4. Кнопка "перезапуск" на самом деле убивает программу, но не перезапускает её.
     
    5. Иногда (не всегда) при возвращении из модального суб-окна (настройки, опции, и т.д.), фокус не возвращается в основное окно программы. Более того, оно (окно) уходит на задний план (к примеру, за окно другой запущенной программы).
     
    Далее, по неочевидным моментам.
     
    1. Было бы логично, если бы при активированном режиме "регулярные выражения", кнопка "поиск/замена многострочного текста" была бы деактивирована. Потому что регулярные выражения сами по себе имеют функционал для для того, чтоб хандлить такой текст. Но это, конечно, всё относительно. Я не тестил этот режим и не в курсе, как он отрабатывает те или иные специфические ситуации.
     
    2. В окно настроек просится кнопка "отмена". Хотя, с точки зрения функционала она не нужна, чисто психологически, комфортнее нажать "отмена", чем "ОК", если зашёл, чтобы просто посмотреть. Но эта кнопка несёт за собой неочевидные моменты. Например, если какие-то настройки были изменены. Программа в этом случае сразу же применяет новые настройки. В этом случае, кнопка "отмена" должна приводить настройки в первоначальное состояние (на момент открытия окна настроек).
     
    3. Момент с кодировкой. Сценарий. Кодовая страница в системе 1252. Настройка для кодировки - Auto. Обрабатывается ANSI-файл. Поиск - \d{4} замена - ГГГГ . Т.е. в замене русские буквы. На данный момент результат в обрабатываемом файле - ????. Это нормально, т.к. соотв. кодовая страница не поддерживает русские юникод-символы. Но, может быть, для этого сценария, когда обрабатываемый файл идентифицируется как ANSI, строку замен тоже интерпретировать, как ANSI? Таким образом, обрабатываемый файл бы не портился - ГГГГ преобразовалось бы в ÃÃÃÃ. И если такой ANSI-файл открыть потом в редакторе и интерпретировать как 1251, то мы бы получили искомое ГГГГ.
    Проблема не надуманная. Например, в HTML-файлах кодировка может задаваться тегами. И при отличии этой кодировки от системной, замены в текущем варианте будут портить файл (для не-ASCII - символов). Если же будет производиться конвертация строки замены в системную кодировку, в рузельтирующем файле окажется корректный результат (если в нём задана ANSI-кодировка).
     
    Из дополнительных пожеланий.
     
    1. Есть такой проект - Regex toolkit. Я не пробовал, но по скриншоту видно, что там есть некоторые интересные штуки. Например, справка по регэкспам. У Вас, помнится, тоже были наработки на эту тему. Было бы неплохо прикрутить что-то этакое
     
    2. Совсем уж экзотическое пожелание. Не из-за того, что не нужно (скорее, наоборот, нужно всем), а из-за сложности реализации. Прикрутить подсветку для регулярных выражений, которая бы задействовалась при активировании соотв. режима.
    Я понимаю, что эта фича есть даже далеко не в каждом серьёзном редакторе. Она всегда была в продуктах JGSoft. В Sublime Text появилась лишь недавно. В Notepad++ до сих пор нет. Поэтому, шансов на то, что вам удастся её прикрутить, немного. Тем более, для AutoIt такой UDF сходу найти не удалось. Но можно попробовать обойти.  
    Есть такой проект под JS - Regex Colorizer. Его код написан давно, поэтому, он вполне может быть совместим с виндовым JScript (ES3). Там, правда, ещё есть стили, которые тоже нужно как-то хандлить, но, думаю, решаемо. Как бы там ни было, получить HTML вполне реально, используя этот код и, к примеру, ChakraCore UDF.
    Следующая задача - отобразить этот HTML в поле (понятное дело нужен будет GuiRichEdit). Готового решения тоже не удалось найти, но есть такая тема.
    В общем, эта идея на поразмыслить
     
    З.Ы. Ну и, пользуясь случаем, хотел бы Вам выразить огромную благодарность за Ваш вклад в дело становления AutoIt! Русское сообщество училось в т.ч. и на ваших примерах и статьях, пользовалось вашими сборками Notepad++.
    Огромное количество юзеров пользуются вашими скомпилированными скриптами, даже не догадываясь о их происхождении ))
    В общем, вы оставили, действительно, большое наследие! Спасибо!

    Всего записей: 1327 | Зарегистр. 03-03-2008 | Отправлено: 13:04 04-04-2019
    AZJIO



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

    Цитата:
    1. Есть такой проект - Regex toolkit.

    Мне кажется он повторяет мой проект RegExp, но с меньшим функционалом, единственное то что он написан на новой версии. Ну что бы я ссылки не воткнул бы в окно, запросто, а в ту прогу сходу добавить таймер, библиотеку регулярок, подсветку.
    В остальном улучшение проги требует много сил и времени, у меня сейчас его нет, учитывая что я прогой пользуюсь каждый день и в анси и в утф, делаю поиск и замену в html, ищу код в код-архиве PureBasic, или в код-архив AutoIt3. И ни разу не подводил. На счёт скорости, я думаю то как выводится инфа и скорость достаточно быстро, я тестировал когда ещё не было вывода, без анализа, чисто поиск и разница с анализом небольшая, а польза от вывода огромная, то есть я лучше сделаю умный вывод, чем сэкономлю секунду. Сам движок рег.выр. работает внутри написан на С++, то есть он не имеет слабого места где можно было бы сказать что быдлокод тормозит жутко, работает в чистом виде движок регекспа PCRE, если тестировать логические конструкции If-Else-Endif, то они в миллисекунду совершают миллион итераций в цикле, поэтому я не скупился на настройки с логическими ветвями, ну да, запрос на атрибуты файла требуют жертв времени, но опять же их игнор просто делают утиль неинтересной, так как она не делает задуманного, ограничивает возможности, поэтому насколько мне показалось не трудно добавить какие либо условия при поиске, которые не добавляют существенного времени. Например поиск пробела тормозит поиск с выводом данных в разы, но это редкий случай, нереальный, а среди реальных случаев поиск с выводом максимум увеличивает время в 2 раза, а вывод можно отключить.
     

    Цитата:
    Следующая задача - отобразить этот HTML в поле (понятное дело нужен будет GuiRichEdit

    Ну поле у меня комбобокс, и вроде как в комбо не засунешь RichEdit, хотя кто его знает. Комбо хранит историю и я не хотел бы ради подсветки ломать переделывать всё и вся. Я к пример сделал подсветку в своём RegExp, но вместо комбо историю пришлось делать через меню, то есть по виду как комбо, только кнопка открывает меню истории.
     
    Для меня заметный недостаток, когда я набираю текст поиска хочется нажать Enter и даже нажимаю по привычке как в Notepad++, но облом, надо нажимать кнопку.
     
    Подсветка регвыра в принципе нужна для отладки, а у меня уже использование, хотя конечно было бы красиво. То есть я делаю отладку в своём RegExp, потом использую в NPP или TextReplace, кроме случаев когда регвыр лёгкий. В NPP у меня хоткей на RegExp (Alt+R). Фактически вставишь подсветку задашься вопросом, а почему бы не библиотеку хранения регекспов и придётся весь RegExp встраивать в TextReplace. Ну если правильно написать модулем, то можно было бы легко встраивать типа вызвал функцию, появился RegExp. Вместо RichEdit можно Scintilla использовать, была идея встроить ещё блокнот для просмотра найденного файла, но решил попроще, передать файл в блокнот по умолчанию и активировать в нём поиск, и это с NPP надёжно работает, постоянно прыгаю к найденному.
     

    Цитата:
    4. Кнопка "перезапуск" на самом деле убивает программу, но не перезапускает её.  
    Функционал использует возможность запуска AU3 через ком-строку (AutoIt3ExecuteScript, AutoIt3ExecuteLine), но так как это встраивает в систему интерпретатор AutoIt3, грубо говоря пользователь не подозревает, что прога является источником команд, которым может воспользоваться кто-то, то я просто добавил ключ на запрет этой фичи (#NoAutoIt3Execute) и поломался перезапуск, но в скомпилированной версии, а при тесте я часто пользовался этой кнопкой. В новых версиях AutoIt3 этот ключ в запрете по умолчанию.
     
    На счёт 1251 и 1252 тут я не в курсе, может ведь оказаться любая системная и любая вводимая, фактически нужен конвертор кодировок и определитель кодировки вводимого текста.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 23:42 05-04-2019 | Исправлено: AZJIO, 12:20 06-04-2019
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, можно ли с помощью TextReplace добавить заданный текст к концу файла?
     
    Никаких форматирований не нужно, просто пробел и пару слов - " Проверил Такой-то Такой-то"

    Всего записей: 132 | Зарегистр. 01-08-2018 | Отправлено: 18:19 08-05-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    Да. Регулярным выражением. Найти конец строки \z заменить на свой текст.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 17:04 10-05-2019
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO Спасибо! Получилось.

    Всего записей: 132 | Зарегистр. 01-08-2018 | Отправлено: 18:53 12-05-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добавил вызов AkelPad4 с поиском.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 17:08 08-08-2019
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO, подскажите, пожалуйста.
    Есть пара типичных задач, которые приходиться выполнять регулярно. Есть ли в программе возможность запускаться через bat-файл или ярлык с заданным сценарием?
    Чтобы не редактировать строки поиск/замена и не подгружать сценарии.
     
    За программу очередной раз спасибо, каждый день радует :)

    Всего записей: 132 | Зарегистр. 01-08-2018 | Отправлено: 03:02 09-08-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    Есть отдельные команды поиска и замены с параметрами, а со сценарием нет, разве что переписать сценарий в командные строки.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 15:28 09-08-2019
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Обнаружил вот такую неприятность с заменой многострочного текста.
    Если набрать текст для замены с нужным форматированием (переносы, отступы) то первая замена проходит нормально.
    Но если нужно воспользоваться этим шаблоном второй раз, то обнаруживается, что все строки "сбились" в одну (пример на скриншотах) и приходится восстанавливать форматирование.
     
    Нельзя ли исправить, чтобы TextReplace запоминал текст вместе с форматированием?
     
       

    Всего записей: 132 | Зарегистр. 01-08-2018 | Отправлено: 04:06 29-01-2020
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    В правом верхнем углу есть "Символ переноса", выбери там тильду ~ и ситуация восстановится. Проблема что раскрывающийся список не может сохранить многострочный текст, поэтому используется подмена символов, который указывается в соответствующем месте. Во время поисков тильда или то что выбрано в качестве переноса заменяется на перенос и ищется уже реальный многострочный текст

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 16:41 01-02-2020 | Исправлено: AZJIO, 16:43 01-02-2020
    PryMan



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

    Всего записей: 132 | Зарегистр. 01-08-2018 | Отправлено: 13:28 03-02-2020
    GEGEMON



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    скажите пжст, ваша замечательная программа не работает вот с такими символами? Я точно знаю что они есть в файлах, но результат поиска 0  ((

    Всего записей: 2820 | Зарегистр. 07-02-2006 | Отправлено: 08:22 24-03-2020 | Исправлено: GEGEMON, 08:26 24-03-2020
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GEGEMON
    Программа написана на AutoIt3, он внутренне работает на UTF16, может проблема с UTF32? Символы случаем не за гранью UTF16? Ещё вариант искать и заменять бинарно, это не удобно, часто использовать такое муторно. Здесь я уже бессилен, это уже внутренняя часть языка AutoIt3.
    Можешь файлик с текстом скинуть, не картинкой, я попробую на новой версии AutoIt3.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 22:13 26-03-2020 | Исправлено: AZJIO, 22:15 26-03-2020
    GEGEMON



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    покорнейше прошу простить, не было нифига в папке символов этих.  
    Проверил там где 1000% они есть - находит без проблем.

    Всего записей: 2820 | Зарегистр. 07-02-2006 | Отправлено: 08:57 27-03-2020
    YasnyiPerec



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста - если в комстроке надо поменять строчку в файле и в этой строчке есть кавычки, то как это правильно прописать в ключах \s"" и \r""?

    Всего записей: 95 | Зарегистр. 16-12-2019 | Отправлено: 09:55 20-10-2020
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YasnyiPerec
    Использовать бинарный режим. В регулярном выражении символы тоже можно задавать бинарными кодами \x22 \x{22} \042 (шестнадцатеричный и восмеричный).

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 11:56 24-10-2020 | Исправлено: AZJIO, 12:04 24-10-2020
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновил (скачать), добавил ключ /gui, чтобы из текстового редактора запускать с параметрами поиска.
    Например:

    Код:
    \gui \s"%Word" \p"C:\PureBasic\CodeArchiv" \m*.pb*

    Эта команда открывает окно для поиска слова из переменной %Word в пути C:\PureBasic\CodeArchiv с маской файлов *.pb*. Удобно использовать как инструмент редактора, когда в качестве слова поиска передаётся выделенное в редакторе слово, а путь поиска можно передать папку исходника, а маску - расширение открытого файла. В моём случае конкретная программная среда, а не универсальная строка редактора.
     
    Также недавно я стал пробовать писать эту же программу на PureBasic с поддержкой Linux. Можно уже попробовать частичную реализацию - скачать.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 22:17 20-01-2024 | Исправлено: AZJIO, 22:35 20-01-2024
    timkoplus



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сорри, за тупость, но я так и не понял как ее запустить на Windows 10.
    Она работает только из командной строки? Просто нажатие на exe файл - ни к чему не приводит...

    Всего записей: 17 | Зарегистр. 09-01-2009 | Отправлено: 16:07 03-02-2024
    AZJIO



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

    Цитата:
    Просто нажатие на exe файл - ни к чему не приводит...

    Должен приводить. Если на на Win-x32 запускать TextReplace-x64 то ни к чему не приведёт.
    И я не знаю как виндовый защитник к нему относится, я его выпилил 5 лет назад, у меня касперский стоит.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 20:17 12-02-2024 | Исправлено: AZJIO, 20:20 12-02-2024
    Waran789



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Привет. Использую твою прогу WinFont. Все здорово, но не работает почему то опция Экспорт.  Пробовал на нескольких машинах - не работает. Поправь пожалуйста. И еще - у автора программы, с которой ты сделал свою, есть прога - sysfontbold.exe.  Мне понравилась сама идея - иметь несколько  
    настроенных фонтов и быстро переключаться между фонтами , так как для одной программы подходят одни настройки фонтов, а для другой программы другие.  
     
     

    Всего записей: 639 | Зарегистр. 07-06-2008 | Отправлено: 11:21 16-03-2024
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4

    Компьютерный форум Ru.Board » Компьютеры » Программы » TextReplace


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru