На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> пустая ли папка?
    Как узнать, пустая ли папка, или в ней есть какие-то файлы?
      Воспользуйся MS Scripting Run Time (точно непомню как правильно она пишется. в VB меню [проект>ссылки])
        Для этого есть многоооо выходов из положения:
          один из спосбов:
          (извращенческий, я так делал когда был ламачком) попытаться удалить папку, обычный Kill не может удалять не пустые папки. а потом если не возникло ошибки то пустая, а если есть ошибка то с чемто.
            ну вот даже сейчас тебе привиду наверно кусочек кода:

            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
              второй способ менее извращённый, хотя нет ещё более:
              создай контрол 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
                Ну и наконец самый лучший вариан - это поиск всех фалов в этой директории.

                А уж как искать это ты посмотри по форуму, тут какой ... всячины .... очень много :-)
                  Ой нет не всех достаточно только одного
                    Вот набросал примерчик 8), правда не совсем уверен правильно ли он работает с корневыми каталогами  :-[. А уж про извращенность молчу  :-X
                    ExpandedWrap disabled
                      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
                      Dim fso as Object
                      dim fold
                      Set fso = CreateObject("Scripting.FileSystemObject")
                      Set fold = fso.GetFolder("Path")
                      if fold.file.count = 0 then msgbox "Папка пуста!"
                        Dim fso as Object
                        dim fold
                        Set fso = CreateObject("Scripting.FileSystemObject")
                        Set fold = fso.GetFolder("Path")
                        if fold.files.count = 0 then msgbox "Папка пуста!"
                          Извращенцы  :-/

                          Вот код:

                          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
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0299 ]   [ 16 queries used ]   [ Generated: 27.09.24, 02:41 GMT ]