Решение для не готовых дисков в vb6 - PullRequest
2 голосов
/ 07 февраля 2012

Мне нужно лучшее решение для работы с неподготовленными дисками, и я хочу иметь возможность просматривать и изменять файлы на моем 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

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Рассматривали ли вы использование FileSystemObject, который является частью Microsoft Scripting Runtime (scrrun.dll)?

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 неоценим при работе с дисками и путями.

0 голосов
/ 08 февраля 2012

Что такое империалдир?Например, это список файлов?Является ли проблема в том, что свойство Path всегда выдает ошибку, когда вы пытаетесь установить его, даже если существует путь, который, как вы знаете, существует, например, «k: \»?Некоторые объекты имеют свойство Path, доступное только для чтения.Лучшее имя для функции CheckDrive будет RootPathOnDrive.

...