Универсальная проверка доступности файла или записи на диск

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Универсальная проверка доступности файла или записи на диск

Сообщение Pantalone » 16.08.2006 (Ср) 1:41

Допустим работаем мы с файлом, но если дело происходит на NTFS и к файлу обрежут права, например на запись, то программа будет вылетать с ошибкой. Не видел ли кто примерчика для универсального определения возможности работать с файлом? И того же для проверки записи файла на диск. Т.е. проверка на наличие места, проверка не компакт ли это, проверка на права.
Было бы здорово.

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

Сообщение GSerg » 16.08.2006 (Ср) 1:43

В многопоточной среде, где все указанные параметры могут быть изменены извне после того, как ты их проверил, существует ровно один способ сделать это, и ты его знаешь.
Ловить ошибку.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.08.2006 (Ср) 4:56

Ну господи, Pantalone, проверить файл на возможность записи можно, если попытаться открыть его функцией CreateFile с флагом GENERIC_WRITE - если функция вернет ноль, значит облом.

Но, конечно, GSerg прав и самый надежный способ заключается именно в отлове ошибки...
А я все практикую лечение травами...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 16.08.2006 (Ср) 11:49

Дык ошибки тоже разные бывают, надо же юзеру что-то сказать, а если проблема не в файле, а еще в чем-то тогда что? Это вы слишком упрощаете товарищи :)

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

Сообщение Konst_One » 16.08.2006 (Ср) 12:12

GetLastError еще никто не отменял :wink:

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 16.08.2006 (Ср) 12:21

Pantalone писал(а):Дык ошибки тоже разные бывают, надо же юзеру что-то сказать, а если проблема не в файле, а еще в чем-то тогда что? Это вы слишком упрощаете товарищи :)
А ты как думал? Чем код проще, тем эффективней, быстрее, безглючней. "Не плоди сущности сверх необходимого" © Оккам. Это из философии, а из технологии - чем больше, сложнее код на вб, тем глючней экзешник, даже если код без ошибок.
Лучший способ понять что-то самому — объяснить это другому.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 16.08.2006 (Ср) 14:48

Не, все-таки я не согласен. Ну допустим пробуем открыть файл на запись - не удалось, значит пробуем на чтение - опять не удалось. Что сказать юзеру, фиг знает почему файл не открывается? Или лучше сказать что база повреждена или у вас не хватает прав для открытия файла обратитесь к админу. Последнее мне кажется более приемлимо. Потому и надо проверить обстоятельства произошедшего не через обработчик, а нормально. И потом, надо знать почему файл на запись не открылся, чтобы если действительно он защищен то открыть его на чтение-только, а если ошибка какая-то то послать себе любимому баг репорт. А так скажете юзеру что не открывается и привет, никакого баг-репорта не узнаете.
Ну это мое мнение, не согласиться с ним дело партии :)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 16.08.2006 (Ср) 15:12

Делай как знаешь, никто тебя уговаривать не собирается. Замечу лишь, что многие серьезные программные продукты при невозможности создать файл так и пишут - невозможно. Без указания причин невозможности. И разработчики не чувствуют угрызений совести по этому поводу, как и не возмущаются пользователи. Обычно это дело пользователя, выбрать место гарантированно доступное для записи.
Лучший способ понять что-то самому — объяснить это другому.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.08.2006 (Ср) 15:19

Что сказать юзеру, фиг знает почему файл не открывается?
Pantalone
тебе намекнули на GetLastError?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог


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

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

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

    TopList