|
|
|
Как проверить, что каталог пуст
|
|||
|---|---|---|---|
|
#18+
Есть задача - выполнить какие-то действия в том случае, если каталог пуст. Факт пустоты каталога пробую определить через if (FindFirst(...) != 0) { } в качестве первого параметра FindFirst указываю путь и маску *.* в конце В помощи сказано, что если файл не найден, то возвращается Windows error code. Пробовал через try ... catch ... . Все-равно при пустом каталоге проскакивает. Может есть какой-нибудь другой способ проверить факт пустоты каталога. С уважением, Сергей К. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2003, 12:19 |
|
||
|
Как проверить, что каталог пуст
|
|||
|---|---|---|---|
|
#18+
можно использовать FindFirstFile из SDK: if (FindFirstFile() != INVALID_HANDLE_VALUE) {... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2003, 12:57 |
|
||
|
Как проверить, что каталог пуст
|
|||
|---|---|---|---|
|
#18+
struct _finddata_t f; .... h = _findfirst(path, &f)) // проверить, не пусто ли. вроде бы по крайней мере должны быть "." и ".." .. если не пусто, то while( !(f.attrib & _A_SUBDIR)) { if( _findnext(h, &f) == -1 ) return false; } return true; // по крайней мере у меня написано примерно так , хотя немного для другой цели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2003, 12:57 |
|
||
|
Как проверить, что каталог пуст
|
|||
|---|---|---|---|
|
#18+
Небольшое уточнение В качестве первого параметра функции FindFirst передаю переменную (AnsiString), которая формируется программно. В этой переменной каталоги разделены двойным '\', если я в первом параметре подставлю путь, в котором каталоги разделены одним '\', то все нормально, т.е. if (FindFirst(MyStr, iAttributes, sr) == 0) в переменной MyStr - "C:\\Temp\\*.*" (не получается), а когда конкретно укажу if (FindFirst("C:\Temp\*.*", iAttributes, sr) == 0). При этом если в маске файла указать конкретный файл (например в MyStr собрать "C:\\Temp\\flag.txt" ), то и в первом случае работает. Непонятно ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2003, 13:38 |
|
||
|
Как проверить, что каталог пуст
|
|||
|---|---|---|---|
|
#18+
писал:Есть задача - выполнить какие-то действия в том случае, если каталог пуст. Факт пустоты каталога пробую определить через if (FindFirst(...) != 0) { } в качестве первого параметра FindFirst указываю путь и маску *.* в конце В помощи сказано, что если файл не найден, то возвращается Windows error code. Пробовал через try ... catch ... . Все-равно при пустом каталоге проскакивает. Может есть какой-нибудь другой способ проверить факт пустоты каталога. С уважением, Сергей К. try ... catch ... тут непричем. если функция не находит то что ты ей сказал, то она не возбуждает исключение просто возвращает не 0 Если бы ты привел более полный код тогда возможно можно было бы что то сказать. И к тому же в каждом каталоге есть 2 каталога: 1) . 2) .. Вот их у тебя и находит. вот тебе пример на котором можешь убедиться: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. еще есть вариант что в пути к каталогу разделителем между каталогами ты писал один \ вместо двух ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2003, 13:55 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2035811]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 375ms |

| 0 / 0 |
