Ошибка доступа к файлу / файлу в App.Path - PullRequest
1 голос
/ 28 июля 2011

Ну, я сделал эти коды, и когда я запускаю его, VB6 сказал мне Path/File Access Error, кто-нибудь может мне помочь:

BasePath = App.Path & "\" & "\users\"
MkDir BasePath
Open BasePath & name & "\list.txt" For Input As #1

Ответы [ 3 ]

3 голосов
/ 28 июля 2011

Вы делаете c:\xxx\users\, затем открываете c:\xxx\users\name\list.txt, но вы не создали подкаталог name, это не произойдет автоматически.

Вам нужно будет создать \users, затем \name. (Вы, вероятно, также должны учитывать ошибку, которая произойдет, если вы mkdir существующий каталог)

Что-то вроде

sub foo
   Dim BasePath As String
   Dim name As String: name = "bob"

   '// get App.Path accounting for "DRIVE:\" which has a trailing \    
   Dim root As String: root = App.Path & IIf(Right$(App.Path, 1) <> "\", "\", "") 

   BasePath = root & "users\"

   makeDir BasePath
   makeDir BasePath & name & "\"

   '//you have this:
   Open BasePath & name & "\list.txt" For Input As #1
   '//but if you have just created the directory, the file wont exist so this will error?
end sub

Sub makeDir(sPath As String)
    If Len(Dir(sPath, vbDirectory)) = 0 Then MkDir sPath
End Sub
2 голосов
/ 28 июля 2011

Если каталог, который вы создаете, уже существует, вы получите сообщение об ошибке, которое вы описали при вызове MkDir.

Я предлагаю сначала проверить существование каталога, прежде чем пытаться его создать:

If (Dir(BasePath, vbDirectory) = "") Then
   MkDir BasePath
End If
1 голос
/ 28 июля 2011

Я думаю, что это переменная name это ваша проблема:

Например:

Предположим, Basepath = "C:\Temp\users" и name = "FooBar"

MKDIR делает путьдля BasePath

Команда Open попытается создать путь в C:\Temp\Users\FooBar\List.txt

Поскольку вы не создали подкаталог FooBar, именно поэтому вы получаете File/Path Access Error


Дополнено кодом:

Я подозреваю, что ваш каталог users уже существует, поэтому вам нужно создать папку с именем:

BasePath = App.Path & "\users\"
MkDir BasePath & name
Open BasePath & name & "\list.txt" For Input As #1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...