Проверка правильности пути к файлу/папке

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SnAIper
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 13
Зарегистрирован: 09.09.2005 (Пт) 23:01
Откуда: Mytischi Текущий язык: VB, ПЗС

Проверка правильности пути к файлу/папке

Сообщение SnAIper » 10.09.2005 (Сб) 9:27

Сорри, знаю что проблема покажется детской. Но изза этого моя прога выдает ошибку номер 76, если введённый путь оказывается неверным.
Юзал поиск - видно, криво. Ответа на своё вопрос не нашукал :(

В общем - даны некие данные - путь к файлу или папке, типа string. Необходимо проверить, существует ли файл/папка по этому пути. И, соответственно, если не существует - чтоб этот способ сообщил об этом не ошибкой номер семдесят шесть, а изменением какой-нить переменной-флага... Или есть функция для проверки наличия данной папки? Мне, собственно, больше необходимо проверить правильность папки, ибо файл я перед началом append'ю, и если его нету, то прога не вылетает. Хотя и про файл скажите, мне мусор не нуж0н...

Как говорится, плиз, не могу дальше без этого, прога нэ пашэт, итэдэ, итэпэ :)
C# в топку. С++ рулит.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 10.09.2005 (Сб) 9:39

ссылка в references: Microsoft Scripting Runtime

и код:
Код: Выделить всё
    Dim fso As New FileSystemObject
    Set fso = New FileSystemObject
   
    MsgBox fso.FolderExists("путь к папке")
    MsgBox fso.FileExists("путь к файлу")
    Set fso = Nothing
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.09.2005 (Сб) 9:40

Ищи по строке "FileExist" или "ExistFile".
Lasciate ogni speranza, voi ch'entrate.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 10.09.2005 (Сб) 12:44

не совсем, вот цитата:
Глюк в ExistDir
Автор: Игорь Мальцев

При разработке приложений в VB или VBA часто возникает потребность в функциях ExistFile и ExistDir, проверяющих существование файла или папки. В литературе встречаются такие примеры:


Public Function ExistFile(ByVal strFileName As String) As Boolean
ExistFile = False
On Error GoTo f1
ExistFile = (Dir(strFileName) <> "")
f1:
On Error GoTo 0
End Function

Public Function ExistDir(ByVal dirName As String) As Boolean
ExistDir = False
On Error GoTo f1
If Len(dirName) < 2 Then GoTo f1
If Right(dirName, 1) = "\" Then dirName = Left(dirName, Len(dirName) - 1)
ExistDir = (Dir(dirName, vbDirectory) <> "")
f1:
On Error GoTo 0
End Function


Однако, при попытке применить функцию ExistDir к сетевым путям, обнаруживается, что она работает неверно, возвращая, например, False для существующей папки \\MAIN\POST$.
Небольшая модификация этой фунции позволяет использовать ее как для обычных, так и сетевых путей:

Public Function ExistDir(ByVal dirName As String) As Boolean
ExistDir = False
On Error GoTo f1
If Len(dirName) < 2 Then GoTo f1
If Right(dirName, 1) = "\" Then dirName = Left(dirName, Len(dirName) - 1)
If Left(dirName, 2) = "\\" Then
ExistDir = (Dir(dirName + "\", vbDirectory) <> "")
Else
ExistDir = (Dir(dirName, vbDirectory) <> "")
End If
f1:
On Error GoTo 0
End Function


Возможно, это наблюдение окажется полезным разработчикам ПО.


URL: http://vbrussian.com/Trick.asp?ID=5#trc29
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 10.09.2005 (Сб) 13:46

Прочитай ветку.
http://bbs.vbstreets.ru/viewtopic.php?t=17961&highlight=filesystemobject

Гуру склоняются к обработке ошибок в момент работы с файлом.

SnAIper
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 13
Зарегистрирован: 09.09.2005 (Пт) 23:01
Откуда: Mytischi Текущий язык: VB, ПЗС

Сообщение SnAIper » 10.09.2005 (Сб) 17:34

Большое спасибо, применю по назначению(если, конечно, не сгорит проц) :)

Правка:
_________________
Вроде бы всё работает, если кто играет в Проклятые Земли - могу выслать прогу :D
C# в топку. С++ рулит.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 4

    TopList