![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Доброго времени суток!
Собственно пишу приложение. Перед мною стоит задачка: Реализовать поиск файлов на всех логических(фиксированных) дисках. Поиск не чувствителен к регистру символов. Порыскал по форуму, в итоге у меня есть такой код: Получение списка дисков: Код:
Код:
Код:
memo2 - приёмник результатов поиска slistBox1 - список дисков Помогите с решением проблем.... |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
...каких проблем? lowercase, uppercase
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
добавлю к верному ответу, что приводить к одному регистру в винде можно спокойно, ФС не регистрозависимая.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Вот наклацал рекурсивный поиск. Но почему он не копает файлы в под папках?
Код:
Его этот код находит. Но этот файл я раскопировал по всей папке windows и её подпапках. Почему туда не заходит, и не показывает что там тоже есть эти файлы...? |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Маска и на имена каталогов распространяется, вот каталоги и не находит и, как следствие, рекурсия не распространяется на вложенные каталоги
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Окей. Спасибо, чуток изменил...
Теперь другая прооблема. По скольку поиск в один поток по всему винту - это доолго. Я решил проблему многопоточностью. Схема такая: Потоку передаём диск, и список файлов которые надо искать. Поток ищет файлы на заданом диске, и выводит их в общий TStrings. Но тут проблема - потоков несколько. Список с результатами только один. Есть вариант что у потока будет свой список результатов. Потом эти результаты будут сложены в единое целое. Но я пытаюсь решить это с помощью критических секций... Код основной программы: Код:
Код:
Последний раз редактировалось Человек_Борща; 30.06.2011 в 15:29. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
1. Критическую секцию по идее нужно создать одну в основном потоке, а в дочерних потоках к ней обращаться перед и после записи в StringList
2. BeginUpdate - зачем вынесена так далеко? Если и использовать, то перед и после записи в StringList или вообще не нужно, разве крит.секция не защищает в этот момент StringList? 3. Слабо верится что несколько потоков существенно скорость повысят, особенно если логические диски на одном носителе 4. А если вместо крит.секции сообщения посылать форме и в них заполнять StringList. Должно прокатить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 30.06.2011 в 16:07. |
![]() |
![]() |
![]() |
#8 | ||||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Но тут проблема, SearchUnit использует MainUnit и на оборот. Создавать третий модуль, ради одной переменной? Цитата:
Цитата:
![]() Я пака не понимаю почему так будет быстрее, но думаю что будет быстрее. Но думаю что система построит работу так: 1 поток ищет 1 файл на c 2 поток ищет 1 файл на d 3 поток ищет 1 файл на e 4 поток ищет 1 файл на f 1 поток ищет 2 файл на c 2 поток ищет 2 файл на d 3 поток ищет 2 файл на e 4 поток ищет 2 файл на f 1 поток ищет n файл на c 2 поток ищет n файл на d 3 поток ищет n файл на e 4 поток ищет n файл на f Но это предположение... Цитата:
Можно пример , как посылать текст и откуда его читать(Из какого параметра TMessage)? Последний раз редактировалось Человек_Борща; 30.06.2011 в 16:20. |
||||
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Если ничего не напутал: Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Ну тогда откажусь от многопоточности. т.к. быстрее искать всеравно не будет.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск по всем столбцам | fineleave | Помощь студентам | 0 | 22.05.2011 21:09 |
Привод к нижнему регистру | Алексей Егораев | Помощь студентам | 0 | 02.03.2011 17:18 |
Чувствительность к регистру | Krasi | PHP | 1 | 20.07.2010 20:17 |
Как организовать поиск значения ячейки по всем листам | alec | Microsoft Office Excel | 7 | 01.05.2010 17:01 |
Поиск данных по всем листам книги | demon_81 | Microsoft Office Excel | 0 | 20.01.2010 11:28 |