2

我需要一个更好的解决方案来处理未就绪的驱动器,并且希望能够查看和更改我的 rw 驱动器中的文件。不幸的是,它总是给出驱动器未就绪错误,我唯一能做的就是处理错误。

到目前为止,我已经这样做了:

我的驱动器:

Private Sub imperialdrive_Change()
    On Error GoTo I_have_a_baad_feeling_about_this
    imperialdir.Path = RootPathOnDrive(imperialdrive.Drive)
    Exit Sub

I_have_a_baad_feeling_about_this:
    If Err.Number = 68 Then
        MsgBox "The selected drive is not available at the moment.", vbOKOnly, "I feel a disturbance in the force."
    Else
        MsgBox Err.Number & " " & Err.Description, vbCritical, "There is a Bounty Hunter here."
    End If
End Sub

我的功能:

'Such a bad choise for a function name
'It sounds like doing smt more than changing the name of drive lol
Public Function RootPathOnDrive(ByVal Drive)
    'So how it comes as "k:" instead of "k:\" Is it really cause its not ready? Both ways i should try reaching "k:\"
     RootPathOnDrive = Left(Drive, 1) & ":\"
End Function
4

2 回答 2

1

您是否考虑过使用作为 Microsoft 脚本运行时 (scrrun.dll) 一部分的 FileSystemObject?

Public Function CheckDrivePathReady(IN_sPath as String) As Boolean
    Dim myFSO As Scripting.FileSystemObject
    Dim myDrive As Scripting.Drive
    Dim myDriveName As String

    'Create a new FileSystemObject
    Set myFSO = New Scripting.FileSystemObject

    'Get drive name from path.
    myDriveName = gFSO.GetDriveName(IN_sPath)
    'Create a "Drive" object to test the properties of.
    Set myDrive = gFSO.GetDrive(myDriveName)

    'Test if the drive is usable.
    '(there are more properties than just "ready" that can be tested)
    If myDrive.IsReady Then
        'Work with ready drive here....

    End If

    'Make sure to clean up when done.
    set myDrive = Nothing
    Set myFSO = Nothing
End Function

您需要在项目引用中包含 Microsoft Scripting Runtime,但我发现 FileSystemObject 在使用驱动器和路径时非常有用。

于 2012-02-28T00:40:54.220 回答
0

什么是帝王?例如,它是一个文件列表框吗?问题是 Path 属性在您尝试设置它时总是抛出错误,即使您知道存在路径,例如 "k:\" ?某些对象具有只读的 Path 属性。函数 CheckDrive 的更好名称是 RootPathOnDrive。

于 2012-02-08T19:27:27.257 回答