Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/50: Рейтинг темы: голосов - 50, средняя оценка - 4.80
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409

Проверка наличия каталога

17.03.2012, 22:10. Показов 10897. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
If ... Then
..
Else
..
End If
Что нужно написать?

Просто фишка в чем. Когда программа создает каталог она видет что на диске С уже есть он и вылетает Time Run и т.д.
Конечно можно ввести запрос чтобы вводили имя папки, Но как бы обойтись без этого?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2012, 22:10
Ответы с готовыми решениями:

Проверка наличия соединения GetAdaptersInfo
Как-то Вы интересовались, как определить соединение с интернет... К сожалению, тот топик я не нашел, и не знаю нашли ли Вы что хотели. ...

Проверка наличия доступа к папке (по сети)
Добрый вечер. Два вопроса такого плана: 1. как узнать существует сетевая папка или нет? 2. как вызвать окно аутентификации для...

Проверка наличия положительных элементов массива, равных их индексу
Есть ли среди положительных элементов массива элементы, равные своему индексу, в противном случае выдать сообщение, что таковых нет.

31
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
18.03.2012, 21:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Апострофф Посмотреть сообщение
Только выполнив в цикле Dir(Path,0).
Это не по существу. Не надо выкручиваться, естественно в контексте вопроса ТС :
Цитата Сообщение от snyppimylt Посмотреть сообщение
If ... Then
Приведите пример папки или файла, когда это
Visual Basic
1
2
3
4
5
If Dir("c:\temp") <> "" Then
MsgBox "это имя занято"
Else
MsgBox "Это имя свободно"
End If
приведет к "вылетает Time Run".
0
 Аватар для Апострофф
9912 / 3933 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
18.03.2012, 22:19
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Приведите пример папки или файла, когда это
Visual Basic
1
2
3
4
5
If Dir("c:\temp") <> "" Then
MsgBox "это имя занято"
Else
MsgBox "Это имя свободно"
End If
приведет к "вылетает Time Run".
Как раз с этим я не спорил.
И влез, когда увидел FolderExists от Dimon_bogoduhov.
Я в курсе, чем отличается файл от папки, занятое имя от допустимого и т.д. и т.п...

Цитата Сообщение от Catstail
Я имею в виду, что если при вызове Dir$ вторым параметром задан атрибут vbDirectory, то не должны бы возвращаться имена файлов. Ведь у файла этот атрибут не установлен...
Понимаю твоё негодование, но придётся смириться с тем, что Dir$ вторым параметром принимает не один атрибут, а сумму (Or).
И в этом есть смысл, поверь! Можно в зависимости от цели написать так или любую другую комбинацию атрибутов
Code
1
2
3
4
Dir$(Path,vbnormal)
Dir$(Path,vbnormal or vbArchive)
Dir$(Path,vbnormal or vbArchive or vbHidden)
Dir$(Path,vbnormal or vbArchive or vbHidden or vbSystem)
И результаты каждый раз могут быть разными, но vbnormal(=0) на них никак не влияет (потому что 0 не влияет на сумму)...
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
18.03.2012, 22:46
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Это не по существу... когда это... приведет к "вылетает Time Run".
Приведет, по тому что в контексте вопроса ТС функция использована неправильно.
http://msdn.microsoft.com/en-u... s.71).aspx
"Dir [(PathName[, Attributes])]. Attributes - Constant "vbnormal" is Default. Specifies files with no attributes."

Если Вы вообще не указываете атрибут, по умолчанию она не будет искать каталоги, в т.ч. c:\temp

Добавлено через 8 минут
Правильно создавать каталог с проверкой на отсутствие одноименного файла или каталога через Dir предлагаю так:
Visual Basic
1
2
St = "c:\temp"
If Dir(St, vbDirectory + vbHidden + vbSystem + vbReadOnly) = "" Then MkDir (St)
Судя с экспериментов:
Dir возвращает те файлы и/или каталоги, сумма свойств которых <= указанному в Dir атрибуте.
0
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409
19.03.2012, 01:09  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Visual Basic
1
2
3
4
5
If Dir("c:\temp") <> "" Then
MsgBox "это имя занято"
Else
MsgBox "Это имя свободно"
End If
Этот способ не пашет

Добавлено через 43 минуты
Пацаны, так что мне лучше всего использовать? а то вы тут Дискуссию развели а я сам что-то не понял. Может кто объяснит
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
19.03.2012, 03:09
Тебе нужно проверять наличие папки или нужно, что бы не вылетало с ошибкой?
Мой пример не вылетает
1
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.03.2012, 06:57
Цитата Сообщение от Diskretor Посмотреть сообщение
по умолчанию она не будет искать каталоги, в т.ч. c:\temp
Проверял? А ссылки на доки, написанные для .NET давно уже надо перепроверять, они часто говорят одно, а работает по другому!

Цитата Сообщение от snyppimylt Посмотреть сообщение
Этот способ не пашет
Ты полный код этого участка дай, а то одни ... наставил, а мы догадывайся, что у тебя не так.
Тут ВСЕ способы абсолютно рабочие, а спор идет о минимально рабочем коде.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38226 / 21158 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
19.03.2012, 08:29
Для Апострофа. С пассажем о "сумме (or)" не согласимся... Функция принимает БИТОВЫЙ ПАРАМЕТР. И дело здесь в том, что не предусмотрено атрибута "обычный файл", т.к. vbNormal просто равно нулю. Поэтому поведение Dir$ неестественное. Можно считать это концептуальной ошибкой Microsoft. Было бы логично, чтобы при задании бита vbDirectory программа-исполнитель Dir$ просто пропускала бы обычные файлы. Впрочем, это нетрудно сделать в виде надстройки над Dir.
0
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409
19.03.2012, 18:34  [ТС]
Полный код? я могу только придумать по скольку полного кода нету. Ведь я хочу сделать так:
1. Создать каталог -
1.1 - каталог с таким именем есть? - да - сообщение об ошибке
нет - Каталог создался.

Добавлено через 59 секунд
Или где ошибка, запрос на новое имя.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.03.2012, 18:44
Неужели сложно скопировать пару строк в интерпретатор:
Visual Basic
1
2
St = "c:\temp"
If Dir(St, vbDirectory + vbHidden + vbSystem + vbReadOnly) = "" Then MkDir (St) Else msgbox "Имя/каталог уже существует!"
0
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409
22.03.2012, 19:51  [ТС]
Цитата Сообщение от Diskretor Посмотреть сообщение
Неужели сложно скопировать пару строк в интерпретатор:
Не ттрудно скопировать, но важен сам процесс понятия как это работает, что можно добавить, как этим пользоваться. Обычный человек тоже может взять исходник, пихнуть его в ASCII файл, поставить соотвествующий формат, и запустить с минимальной гарантий что будет работать
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
23.03.2012, 16:22
Цитата Сообщение от snyppimylt Посмотреть сообщение
но важен сам процесс понятия как это работает
противоречит
Цитата Сообщение от snyppimylt Посмотреть сообщение
а то вы тут Дискуссию развели
Спрашивайте тогда конкретно, что именно Вы не поняли.

Гарантии могут быть только, если Вы сами посмотрите в справочник.
Создадите несколько папок/файлов с различными атрибутами (R, S, H, SH, ...), а затем путем экспериментов проверите все возможные параметры обсуждаемых здесь команд на наличие глюков.

Указанная мной команда протестирована на вышеописанных условиях.

Не хотите самостоятельно разбираться в ситуативных глюках пользуйтесь API, которая вообще не спрашивает есть там папка или ее нет, есть там директория для создания в ней субдиректории или нет, без вывода предупреждений и т.п.:
Visual Basic
1
2
3
4
5
6
7
Public Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _
                                            (ByVal hwnd As Long, ByVal pszPath As String, _
                                             ByVal psa As Any) As Long
 
Sub SubDir()
SHCreateDirectoryEx Application.hwnd, "c:\1\1\1", ByVal 0&
End Sub
1
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409
29.03.2012, 22:52  [ТС]
Ребята, всем спасибо, простите что я так тупил, уже давно все понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2012, 22:52

Работа с командной строкой (1. FTP-сервер 2. Проверка наличия подключения)
имеется совет: Для восстановления конфигурации выполните команду: put rom-0, например put c:\config\660hw.cfg rom-0 ftp&gt;...

Проверка наличия каталога
Сейчас я наличие каталога проверяю через stat. Но это скорее unix'овый интерфейс, чем виндузовый. А какой интерфейс есть под виндами? Или...

Проверка наличия каталога
Привет всем. Есть очень томный вопрос. Как сделать чтобы программа проверяла наличие каталога на диске, если его нет то создавала, в...

Проверка наличия шрифта в системе и установить если отсуствует + проверка запущен ли проект с правами админа
Здравствуйте. Как можно проверить наличия шрифта в системе и установить его если отсуствует. Ну плюс еще проверить запущен ли проект от...

Проверка наличия ID в БД
как сделать чтоб была проверка? есть ли что то у пользователя под ид в таблице `&quot;.prefix.&quot;shinfo` ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru