![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Borland_Delphi_6 |
|
|||
![]() LoneLINEss ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
Написал небольшую консольную программку для поиска файлов. Все работает, только когда идет поиском НЕ на диске C:\, файлы находятсЯ, но выдается ошибка. Вот полный код программы:
Вроде бы так. На скорую руку обрезал, возможно, будут какие-нить мелкие ошибки. PS Выдает ошибку Invalid File Name -------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 6 Всего: 137 |
У меня работает. Сначала при поиске по диску D:\ выдал ошибку. Мне кажется, дело было в том, что там некоторые папки были запрещены для просмотра. По диску E:\ поиск нормальный.
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Пара замечаний:
1)Забываешь делать FindClose - утечка ресурсов 2)Интересная строка if (SearchRec.Attr and faDirectory) = SearchRec.Attr then У меня из-за неё из 10 каталогов проверяет только 3... Нужно так: if (SearchRec.Attr and faDirectory) <> 0 then 3)Также не очень понятно, зачем тут стоит faArchive: if FindFirst(FileName, faArchive,SearchRec) = 0 then Просто ставь faAnyFile 4)Эта строка будет true в любом случае, так что её можно убрать: if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then 5)Такая проверка неправильная: if SearchRec.Name[1] <> '.' then Т.к. могут быть каталоги, начинающиеся с точки: ".exe", "...zzz" А так всё работает, ничего не вылетает... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Borland_Delphi_6 |
|
|||
![]() LoneLINEss ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
p0s0l
Можешь написать поправленный код? -------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Это сообщение отредактировал(а) p0s0l - 23.9.2003, 20:59 -------------------- С уважением, г-н Посол. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Borland_Delphi_6 - если ты уже успел посмотреть предыдущий пост, то опять придется его посмотреть, т.к. я тогда забыл одну вещь исправить...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Borland_Delphi_6 |
|
|||
![]() LoneLINEss ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
Ok, большое спасибо!
Но у меня все равно вылетает.... Какое-то "неизвестное программное исключение", а в консоле пишит "Invalid File Name". Запускаю под XP, компилю под Delphi 6. -------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Ок, тогда тебе нужно узнать на каких именах гнется прога.
Измени такое место: if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then begin WriteLn ('***', cDir, ' *** ', SearchRec.Name); ChDir(SearchRec.Name);// войти в каталог .... И посмотри, в какой каталог была последняя попытка перейти... Потом скажи их названия... Ну а если выяснять причину влом, то сделай так:
Это сообщение отредактировал(а) p0s0l - 24.9.2003, 09:53 -------------------- С уважением, г-н Посол. |
|||
|
||||
| Borland_Delphi_6 |
|
|||
![]() LoneLINEss ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
Сделал так никакого результата... -------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
| Borland_Delphi_6 |
|
|||
![]() LoneLINEss ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
Как хотя бы скрыть ошибку?
-------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
дело, как мне кажется, в следующем. в w2k/xp есть такая штука, как System Volume Information. это каталог. но войти в него нельзя. ни в досе, ни в фаре, ни в эксплорере. а поскольку раполагаться он может на разных винтах, а где-то его может и не быть вообще, то и ошибки воттак "гуляют" - у кого глючит, у кого нет. попробуй рекурсивно входить только в те каталоги, которые не являются системными, т.е.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Borland_Delphi_6 |
|
|||
![]() LoneLINEss ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2509 Регистрация: 5.11.2002 Где: in fortune dreams ... Репутация: нет Всего: 20 |
Ну, System Volume Information прежде всего должен быть на диске с, а там ошибки не выдает.
-------------------- Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform. Мои фотографии |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
он может быть на любом диске. попробуй исключить системные каталоги из рекурсивного обхода.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
З.Ы. у меня был похожий глюк. прога обшаривала указанный каталог и все подкаталоги и вытаскивала из них все иконки из всего, чего можно (dll, exe, etc.). nt у меня тогда стояла на диске d. так вот ,когда я задавал поиск по диску С:\, всё было хорошо. а на D - валилась в AV. лечить это таким образом смысла не имело, т.к. иконки обычно и лежат в системных файлах
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Попробуй не использовать chdir, по-моему в нём все дело...
Для этого в функции Find добавь параметр пути:
-------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |