Существует ли папка?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
D'alex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 08.05.2004 (Сб) 20:11
Откуда: Moscow

Существует ли папка?

Сообщение D'alex » 05.10.2004 (Вт) 21:54

:?: Как определить, не используя FSO, существует ли папка?

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 05.10.2004 (Вт) 21:57

Код: Выделить всё
If Dir("Папка") <> "" Then MsgBox "Есть" Else MsgBox "Нет"
Только не забудь на конце пути к папке слэш поставить ("\")

D'alex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 08.05.2004 (Сб) 20:11
Откуда: Moscow

Сообщение D'alex » 05.10.2004 (Вт) 22:08

Спасибо!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.10.2004 (Вт) 22:24

Проверка If Len(Dir("Папка")), по многочисленным слухам, заметно быстрее, чем сравнение с пустой строкой.
Изображение

Matv
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 13.11.2002 (Ср) 9:20
Откуда: Украина, Харьков

Сообщение Matv » 06.10.2004 (Ср) 10:21

Я правильно понял?
Код: Выделить всё
If Dir("e:\tmp\") <> "" Then MsgBox Dir("e:\tmp\") Else MsgBox "Нет"

Я сталкивался с этой проблемой, но обнаружил, что если папка tmp есть на диске, но она пустая, то dir дает ответ "Нет". Последующая попытка создать папку tmp приводила к ошибке. пришлось воспользоваться обработчиком ошибок
Код: Выделить всё
on error goto Err

Может я что то не правильно понял?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.10.2004 (Ср) 10:35

Код: Выделить всё
if Len(dir("e:\temp\",vbDirectory))=0 then
    MsgBox "Not exists!"
end if

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 06.10.2004 (Ср) 11:05

Konst_One - умница, в этом случаи и слеша в конце необязательно ставить.

только зачем len

Код: Выделить всё
if dir("e:\temp\",vbDirectory) ="" then
    MsgBox "Not exists!"
end if
Последний раз редактировалось Vitaly1 06.10.2004 (Ср) 13:30, всего редактировалось 1 раз.

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

Сообщение alibek » 06.10.2004 (Ср) 12:57

Есть еще один ньюанс. Во всех папках (кроме корневой) всегда есть два элемента, "." и "..", можно по ним проверять существование файла. Кроме того, можно искать файл C:\TEMP\nul -- файл nul "существует" во всех папках.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.10.2004 (Ср) 13:30

Не только nul, а ещё prn, aux, con, lptX, и comX, где X - любая цифра.
Изображение

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

Сообщение alibek » 06.10.2004 (Ср) 15:15

Ну да :)
Тогда уж я добавлю, что не nul, prn и т.п., а любое устройство, имеющее зарезервированное имя.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.10.2004 (Ср) 15:19

теперь тему наверное можно закрыть, спасибо alibek:)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.10.2004 (Ср) 15:25

alibek писал(а):Ну да :)
Тогда уж я добавлю, что не nul, prn и т.п., а любое устройство, имеющее зарезервированное имя.

Афаик таких "устройств" ровно столько и есть, сколько я написал... Т.е. это постоянный набор; например, количество COM-портов на машине на него не влияет.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.10.2004 (Ср) 15:27

Кстати :)
Вот если я делаю "Печать в файл", то потом получившийся файлик я могу применить кроме как с командной строки написать copy prn?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение alibek » 06.10.2004 (Ср) 15:36

Больше никуда не применишь, это фактически дамп для принтера. Т.е. если ты этот файлик перешлешь на принтер другой модели, скорее всего ничего не выйдет.
Кстати, можно установить принтер "Generic / Text only" и включить вывод в файл, так можно "сграбить" распечатываемые тексты.
Эти устройства (вернее их наличие в каждой папке) обусловленно следующим.
Можно выполнить команду dir > C:\result.txt, при этом будет результат выполнения команды будет записан в файл C:\result.txt. Можно выполнить команду dir > result.txt, тогда результат будет записан в файл result.txt в текущем каталоге. Ну а наличие nul и пр. в каждом каталоге нужно для того, чтобы команду вида dir > prn можно было выполнить в любом каталоге.
И если я не путаю, до недавнего времени нельзя было проверить таким способом существование каталога на сетевом ресурсе (заданном в UNC).
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.10.2004 (Ср) 15:38

alibek писал(а):Больше никуда не применишь, это фактически дамп для принтера. Т.е. если ты этот файлик перешлешь на принтер другой модели, скорее всего ничего не выйдет.


Ясно :)
Просто когда мне нужно распечать нечто из программы, которой нет там, куда я иду, то я предварительно узнаю тамошнюю модель принтера, печатаю у себя в файл для неё и несу туда...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение alibek » 06.10.2004 (Ср) 15:44

Ага. В этом смысле HP рулят, т.к. у них высокая совместимость (особенно если используется PCL, а не PS). А вот лазерники Canon -- это жуть большая.
Lasciate ogni speranza, voi ch'entrate.


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

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

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

    TopList