PureBasic - форум

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

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


Вы здесь » PureBasic - форум » PureBasic для Windows » Поиск файлов


Поиск файлов

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

1

Пример поиска файлов, скачать

https://i.imgur.com/Y1Lss2X.png

тут на Linux, но и на Windows должно работать, не проверял ещё.

Отредактировано AZJIO (10.03.2023 14:52:46)

0

2

Предыдущая версия работает быстро, так как там используется CopyMemoryString. В расширенной версии очень сложно определить сколько выделить памяти. Например "Полный путь" надо взять максимально возможную длину пути. Для ANSI в Windows вроде 260 символов, для юникода вроде 32000. Допустим это можно вычислить как в предыдущей версии, так как список путей вычисляется первым, но как вычислить имя файла, то есть фактически будет двойной запрос функции сначала GetFilePart для вычисления, а потом для добавления. Работает жутко медленно, если список файлов предыдущей версии получен ха 170мсек, то расширенной 94000мсек, в 553 раза дольше. Даты имеют ширину стандартную их можно получить ширина*количество, размеры тоже можно задать с запасом. Хотя бы вычислить приблизительную величину и задать с тройным запасом.

Может проверять позицию указателя, чтобы довыделить. Допустим выделить мегабайт, не хватило, ещё выделить мегабайт. Сейчас на 40 000 файлов данные на 2,4Мб. В принципе по 3 Мб можно выделять.

Сделал итоговую функцию поиска файлов, скелет. Добавил параметр грубины вложенности каталогов для поиска. Если указать 0, то файлы только текущей папки, в корне.

Отредактировано AZJIO (27.02.2021 02:25:57)

0

3

Оболочка для find (Linux)

Отредактировано AZJIO (23.03.2021 22:11:56)

0

4

Ещё подправил код функции поиска.

Добавлена имитация wildcard, а нативный wildcard перемещён на флаг 4.
Добавлена коррекция маски, если её вводит пользователь в поле ввода и допускает ошибки.

Хотя посмотрел функции выше, я уже делал коррекцию маски. Но сейчас я уже использовал #PB_Any в регулярных выражениях, а также у меня не было удаление дубликатов в маске, теперь есть.
Также имитацию wildcard на регулярных выражениях я писал заново, забыв что уже тут сделал. Но зато свежий взгляд не оборачиваясь на старое, то есть я сделал флаги от 0 до 4, которые используют режимы для маски.

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Поиск файлов