Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.92.99] |
|
Сообщ.
#1
,
|
|
|
Как узнать, пустая ли папка, или в ней есть какие-то файлы?
|
Сообщ.
#2
,
|
|
|
Воспользуйся MS Scripting Run Time (точно непомню как правильно она пишется. в VB меню [проект>ссылки])
|
Сообщ.
#3
,
|
|
|
Для этого есть многоооо выходов из положения:
|
Сообщ.
#4
,
|
|
|
один из спосбов:
(извращенческий, я так делал когда был ламачком) попытаться удалить папку, обычный Kill не может удалять не пустые папки. а потом если не возникло ошибки то пустая, а если есть ошибка то с чемто. |
Сообщ.
#5
,
|
|
|
ну вот даже сейчас тебе привиду наверно кусочек кода:
public function GetEmptyDirectory(String path) on error resume next Kill path if err=0 then mkdir path GetEmptyDirectory=true else GetEmptyDirectory=false end if end function |
Сообщ.
#6
,
|
|
|
второй способ менее извращённый, хотя нет ещё более:
создай контрол FileList а потом пиши: FileList.path="C:\MyFolder" on error resume next FileList.ListIndex=0 public function GetEmptyDirectory(String path) FileList.path="C:\MyFolder" on error resume next FileList.ListIndex=0 if err=0 then mkdir path GetEmptyDirectory=true else GetEmptyDirectory=false end if end function |
Сообщ.
#7
,
|
|
|
Ну и наконец самый лучший вариан - это поиск всех фалов в этой директории.
А уж как искать это ты посмотри по форуму, тут какой ... всячины .... очень много :-) |
Сообщ.
#8
,
|
|
|
Ой нет не всех достаточно только одного
|
Сообщ.
#9
,
|
|
|
Вот набросал примерчик 8), правда не совсем уверен правильно ли он работает с корневыми каталогами :-[. А уж про извращенность молчу :-X
Option Explicit<br><br>Private Const INVALID_HANDLE_VALUE = -1<br>Private Const MAX_PATH = 260<br><br>Private Type FILETIME<br> dwLowDateTime As Long<br> dwHighDateTime As Long<br>End Type<br><br>Private Type WIN32_FIND_DATA<br> dwFileAttributes As Long<br> ftCreationTime As FILETIME<br> ftLastAccessTime As FILETIME<br> ftLastWriteTime As FILETIME<br> nFileSizeHigh As Long<br> nFileSizeLow As Long<br> dwReserved0 As Long<br> dwReserved1 As Long<br> cFileName As String * MAX_PATH<br> cAlternate As String * 14<br>End Type<br><br>Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long<br>Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long<br>Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long<br><br>Private Function есть_в_папке_файлы(Dir As String) As Boolean<br> Dim fdata As WIN32_FIND_DATA<br> Dim resval&<br> Dim hfind&<br> Dim i\%<br> <br> hfind = FindFirstFile(Dir + "\*.*", fdata)<br> If hfind = INVALID_HANDLE_VALUE Then<br> есть_в_папке_файлы = False<br> Else<br> If Len(Dir) = 2 Then 'корневой каталог<br> есть_в_папке_файлы = True<br> Else<br> 'пропускаем папки "." и ".."<br> For i = 1 To 2<br> resval = FindNextFile(hfind, fdata)<br> Next<br> есть_в_папке_файлы = CBool(resval)<br> End If<br> End If<br> FindClose hfind<br>End Function<br><br>Private Sub Command1_Click()<br> If есть_в_папке_файлы("c:\мои документы") Then<br> MsgBox "есть"<br> Else<br> MsgBox "нет"<br> End If<br>End Sub |
Сообщ.
#10
,
|
|
|
Dim fso as Object
dim fold Set fso = CreateObject("Scripting.FileSystemObject") Set fold = fso.GetFolder("Path") if fold.file.count = 0 then msgbox "Папка пуста!" |
Сообщ.
#11
,
|
|
|
Dim fso as Object
dim fold Set fso = CreateObject("Scripting.FileSystemObject") Set fold = fso.GetFolder("Path") if fold.files.count = 0 then msgbox "Папка пуста!" |
Сообщ.
#12
,
|
|
|
Извращенцы :-/
Вот код: Public Function GetEmptyDirectory(path As String) As Boolean Dim a As String a = Dir(path) If a = "" Then GetEmptyDirectory = True Else GetEmptyDirectory = False End If End Function |