PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Linux » TextReplace


TextReplace

Сообщений 1 страница 6 из 6

1

TextReplace

Скачать: yandex
https://i.imgur.com/0OEnaiP.png

Решил переписать утилиту поиска и замены на PureBasic, хотя бы частично (ранее написанную на AutoIt3). Пока только начальные исходники, работает поиск и замена. Потом исходники скорее всего не буду выкладывать, когда уже будет готово.

Почему возник интерес к переписыванию, потому что есть новые идеи, например выполнить в нескольких потоках, один из которых поиск файлов, второй чтение файла и поиск, третий - форматирование результатов вывода, а также возможность компилировать под Linux нативно, скорость быстрее.

Отредактировано AZJIO (09.11.2023 11:59:08)

0

2

Однопоточный доступ к ЖД или твердотельному, так зачем делать поиск и чтение в разных потоках? Шина то доступа - одна.

0

3

Обновления
Добавил поддержку регулярных выражений в поиске и замене
Добавил функционал замены
Добавил чтение ini-файла, но без сохранения (хотя бы настройка для быстрого теста поиска и замены)
Задействовал кнопки: чуствительность к регистру, регвыр, бэкап, замена.

PSY написал(а):

Однопоточный доступ к ЖД или твердотельному, так зачем делать поиск и чтение в разных потоках? Шина то доступа - одна.

я пока не знаю получится ли, есть например поток сбора списка файлов на 15000 файлов работает 3 сек. Но можно попытаться по мере набора начать читать первый (и последующие) файл и запустить в нём поиск, здесь уже будет задействован процессор, а ещё надо сформировать подсвеченный лог результатов поиска, чтобы найденное было красное, а текст до и после был серый, имена файлов синие. То есть если это делать последовательно, сначала получаем список, потом читаем, то в первом случае простаивает процессор, во втором случае частично жёсткий диск, но можно же их напрячь одновременно и получить результат быстрее. Ну и второе преимущество - возможность сделать отмену если процесс длится более минуты, а за это время пользователь понял, что он задал маску поиска не верно из-за чего в результаты попало слишком много файлов или слишком много вхождений и можно отменить и посмотреть хотя бы часть найденного. А если последовательно, то будете вынуждены получить сначала все файлы, но в моей попытке задействовать поток результаты первого файла будут получены в первую секунду. Мечтать не вредно, у меня уже вычисление размера данных перед обработкой требует получения всего списка файлов, так что как я буду разруливать это не представляю, может придётся отказаться, ведь у меня в этой же утилите написанной на AutoIt3 есть флаги запретов устанавливаемые пользователем, например если размер файла больше 188 Мб - хотите продолжить, список файлов более 20000 хотите продолжить и т.д.

0

4

Линуксовую пока разрабатываю, файл TextReplaceScintillaArch.
1. Добавил детальный поиск. Пока не понятно делать ли детали в отдельном окне, а в главном только список.
2. Стоит ли использовать Scintilla, всё таки сторонняя библиотека и сразу 2 Мб добавляет к файлу, при размере программы 200-500 кб.
3. Добавил сохранение раскрывающихся список.
4. Конкретно для линукс сделал распознавание кодировки с помощью pbi от Demivec и преобразование если ANSI. То есть если открывается не поддерживаемый как 1251 ANSI, то если это UTF8, то флаг чтобы при сохранении также сохранить как UTF8 без BOM, а если настоящий ANSI, то преобразуется в 1251, а после замены опять преобразуется в 1252 в диапазоне 0-255. Проверил на HTML-файлах, как в кодировке 1251, так и UTF8, ничего не ломается, русский текст заменяется.

0

5

Обновления
Версия без Scintilla на Windows теперь выводит результат в RTF с подсветкой кода.

Хотел оставить компактность, и вот оно, только из-за необходимости регулярных выражений размер завышен 375кб и 446кб.
Есть желание сделать флаги определяющие, в каком формате делать вывод: RTF, HTML как файл открываемый в браузере, HTML как файл открываемый в веб-элементе и Scintilla. В Windows можно поддержать все 4 способа. В Linux либо совсем исключить RTF, либо имитировать вместо цвета жирный шрифт как в примере Shardik. Но проблема что если в Windows можно выкинуть Scintilla.dll, то в Linux он встраивается внутрь и тогда приходится делать 2 версии компактный без Scintilla с 3-мя вариантами вывода и со Scintilla почти 3 Мб с 4-мя вариантами вывода.

0

6

Для Линукс добавлены два варианта - вывод в отдельное окно Scintilla (как в Windows RTF), с меткой файла v1.5 и вариант с сохранением в HTML-файл с открытием его в браузере, с меткой файла Web (555 кб против 2,6 Мб). Кстати WebGadget() не пошёл у меня, ну вот поэтому я ставку на него не делал, что за прога если она через раз не сможет вывести результат, то есть из 100 компов на 50-ти выдаст ошибку. А с браузером надёжно.

Отредактировано AZJIO (26.04.2024 09:39:20)

0


Вы здесь » PureBasic - форум » PureBasic для Linux » TextReplace