Как узнать, доступен ли сетевой путь или нет - PullRequest
0 голосов
/ 16 июля 2009

Как узнать, доступен каталог или нет?

Использование VB 6.0

databasetext = сетевой путь доступен

If Len(Dir(databasetext)) = False Then
MsgBox "Database Path Not Available"
End if

Я выбираю файл из сетевого пути, если сетевой путь недоступен, отображается ошибка «неверное имя или номер файла»

Как решить эту проблему?

Нужен справочный код VB 6

Ответы [ 2 ]

2 голосов
/ 16 июля 2009

Я использую PathIsDirectory из Shlwapi.dll . Вот некоторый код VB6:

Private Declare Function PathIsDirectory Lib "Shlwapi" _
    Alias "PathIsDirectoryW" (ByVal lpszPath As Long) As Long

Function DirExists(ByVal sDirName As String) As Boolean   
  'NB The shlwapi.dll is built into Windows 2000 and 98 and later:  ' 
  '   it comes withInternet Explorer 4 on NT 4 and 95. '  
  'NB Calling "Wide" (Unicode) version. Always available. '
  DirExists = (PathIsDirectory(StrPtr(Trim$(sDirName))) <> 0)    
End Function

РЕДАКТИРОВАНИЕ: Вы также можете использовать FileSystemObject, но я предпочитаю избегать Microsoft Scripting Runtime (включая FileSystemObject). По моему опыту, он иногда ломается на пользовательских машинах, возможно, потому что его ИТ-отдел параноидален в отношении вирусов.

1 голос
/ 16 июля 2009

Из моей фондовой библиотеки. Я думаю, что я включил все необходимые объявления.

Private Declare Function FindClose Lib "Kernel32" (ByVal hFindFile As Long) As Long
Private Declare Function FindFirstFile Lib "Kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long

Private Const INVALID_HANDLE_VALUE = -1
Private Const MAX_PATH = 260

Private Type FILETIME
   dwLowDateTime As Long
   dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
   dwFileAttributes As Long
   ftCreationTime As FILETIME
   ftLastAccessTime As FILETIME
   ftLastWriteTime As FILETIME
   nFileSizeHigh As Long
   nFileSizeLow As Long
   dwReserved0 As Long
   dwReserved1 As Long
   cFileName As String * MAX_PATH
   cAlternate As String * 14
End Type

Public Function FolderExists(ByVal FolderSpec As String) As Boolean
   Dim rst As Long
   Dim udtW32FindD As WIN32_FIND_DATA
   Dim lngFHandle As Long
   Dim strFolder As String 'set to FolderSpec parameter so I can change it

   strFolder = FolderSpec
   If Right$(strFolder, 1) <> "\" Then
      strFolder = strFolder & "\"
   End If
   strFolder = strFolder & "*"   'add the wildcard allows finding share roots

   lngFHandle = FindFirstFile(strFolder, udtW32FindD)
   If lngFHandle  INVALID_HANDLE_VALUE Then
      Call FindClose(lngFHandle)
      FolderExists = True
   End If

End Function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...