Что нового

Del

winkot

Новичок
Сообщения
169
Репутация
0
Del
 
Последнее редактирование:

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
А зачем так сложно, вот попроще
Код:
$iRes=_IsFolderEmpty('C:\Test1')
MsgBox(4096,'Переменная $iRes',$iRes)
Func _IsFolderEmpty($sPath)
  $aSize=DirGetSize($sPath,3)
  Return @error ?-1:($aSize[1]+$aSize[2]=0?0:1)
EndFunc

Что касается $FileList=_FileListToArray('C:\Test1','*',0) - у меня выдаёт всё нормально
Версия File.au3 от 3.3.16.1
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
If IsArray($IsFolder) Then
Если уж так делать, то надо вместо этого проверять условие
Код:
If @error = 4 Then
(так как функция _FileListToArray() так устроена, что не умеет доставать список в ситуации этой по её мнению ошибки).

А быстрее всего будет работать, если вообще не считать ни файлы, ни размер. Вдруг их очень много. Лучше использовать другую функцию.
Код:
FileFindFirstFile()
MsgBox(4096, "", @error) ; единица будет показателем пустоты папки
 
Последнее редактирование:
Автор
W

winkot

Новичок
Сообщения
169
Репутация
0

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
Спасибо за ответы! Я нашел свою ошибку и поэтому тему удалил, не заметив,что вы ответили.

Можете объяснить, что означает эта строка? В справке ничего не нашел.
Это тернарные условия - https://www.autoitscript.com/autoit3/docs/keywords/Ternary.htm
Очень удобные - экономят кучу места (появились в 3.3.10.0 - 2013)
Код:
Func _IsFolderEmpty($sPath)
  $aSize=DirGetSize($sPath,3) ; 1+2
  If @error Then
    Return -1
  Else
    If $aSize[1]+$aSize[2]Then ; число файлов+папок в 1-м уровне
      Return 1
    Else
      Return 0
    EndIf
  EndIf
;   Return @error ?-1:($aSize[1]+$aSize[2]=0?0:1)
;   Return @error ?-1:($aSize[1]+$aSize[2]?1:0)
EndFunc
 
Верх