Текущий архив: 2004.11.14;
Скачать: CL | DM;
ВнизНужно проверить возможность создания каталога, не создавая его Найти похожие ветки
← →
Мирон © (2004-10-28 00:42) [0]В общем, в TEdit вводится путь к каталогу. На OnChange Edit"a надо проверять, возможно ли создать этот каталог, не создавая его при проверке.
Каким критериям должен удовлетворять задаваемый путь? Заранее спасибо.
← →
Andy BitOff © (2004-10-28 01:05) [1]Создать можно любой каталог в имени которого нет спецсимволов. А можно ли физически создать, не проверишь пока не создашь. Создай CreateDirectory и если вернулось True удали RemoveDirectory. Да, и не забудь проверить были ли там файлы, поскольку могли ввести существующий каталог, но если ввели существующий пустой, то ты его удалишь.
Не притендую на истину в последней инстанции, могут быть другие решения.
← →
Мирон © (2004-10-28 01:12) [2]Andy BitOff © (28.10.04 1:05) [1]
Ну, предположим, юзер будет вводить путь ручками. Путь эдак символов 200. Скорость набора у чувака такая, что он справится секунд за 10. Придется быстро создать и удалить 200 каталогов. Притормаживать не будет?
← →
Defunct © (2004-10-28 01:13) [3]Мирон © (28.10.04 00:42)
> На OnChange Edit"a надо проверять
Никто так не делает. Обычно по кнопке просто производится попытка создать каталог, в случае неудачи пользователю предлагают либо отменить создание каталога, либо продолжить редактирование.
Контр вопрос, вы когда-нибудь видели, чтобы проводник (explorer.exe) при создании каталога вначале проверял можно ли создать каталог не создавая его?
Обратите внимание, что explorer.exe создает каталог "Новая папкаX" и только потом предоставляет возможность поменять его имя.
> Каким критериям должен удовлетворять задаваемый путь?
Каталог должен создаться, если не создался, значит не удовлетворяет. Все на свете вы не предусмотрите да и не нужно изобретать колесо.
Мораль сей басни такова,
зачем мутить какие-то припарки,
когда система на то и создана
чтоб создавать каталог без проверки.
← →
Gero © (2004-10-28 01:15) [4]
> Создай CreateDirectory и если вернулось True удали RemoveDirectory.
Если создать можно, а удалить - нет, то нехорошо получится...
> Придется быстро создать и удалить 200 каталогов. Притормаживать
> не будет?
Вот если 200 000 тогда еще можно задуматься над этим.
← →
jack128 © (2004-10-28 01:17) [5]Defunct © (28.10.04 1:13) [3]
Мораль сей басни такова,
зачем мутить какие-то припарки,
когда система на то и создана
чтоб создавать каталог без проверки.
Круто :-) Снимаю шляпу :-)
← →
Мирон © (2004-10-28 01:21) [6]Defunct © (28.10.04 1:13) [3]
Поясню.
В зависимости от валидности содержания Edit"a надо делать Enabled/Disabled кнопку запускающую поток. Нельзя позволять пользователю нажимать на эту кнопочку, если нельзя создать нужный каталог. Вернее, конечно можно, но не хотелось бы - надо будет выводть какие-то сообщения об ошибках и пинать пользователя, что бы он исправил то-то там-то, а так нет кнопки - нет проблемы. И если кнопка выключается во время ввода в TEdit, то юзеру сразу ясно, что он что-то не то пишет...
← →
Defunct © (2004-10-28 01:30) [7]Мирон © (28.10.04 01:21) [6]
Вот перед стартом потока и проверяйте, можно его запустить или нет. Пользователю ни холодно ни жарко будет там Enable/Disable или будет появлятся приглашение подкорректировать ввод пути. Причем второе - стандартное решение, а enable/disable можно неправильно понять.
> И если кнопка выключается во время ввода в TEdit, то юзеру сразу ясно, что он что-то не то пишет...
Не факт. Кнопка Disabled, и пользователь вбивавший 200 символов имени каталога тупо глядя на клавиатуру в поисках букв "будет долго тупо пялиться на монитор с вопросом какого хлеба кнопка заблокирована". Eсли же при нажатии кнопки его ткнут носом, что имя каталога задано неверно, тогда он точно все поймет.
← →
Мирон © (2004-10-28 01:45) [8]Defunct © (28.10.04 1:30) [7]
Ладно, буду думать и, наверно, так и сделаю.
ЗЫ. А вообще до сабжа я додумался, начитавшись статей про пользовательский интерфейс и прочую защиту "от дурака". Так вот одна из главных мыслей там (не точно, но близко к тексту):
1. Не надо позволять пользователю жать куда бы то ни было, если заведомо известно, что ничего хорошего из этого не выйдет.
2. Не надо у пользователя рябить перед глазами сообщениями об ошибках. (Как вариант для моего случая - красный цвет тескта в Edit, если путь "в никуда")
← →
jack128 © (2004-10-28 02:01) [9]Мирон © (28.10.04 1:45) [8]
Сделай компромисный вариант - не позволяй пользователю вводить недопустимые символы ("*" , "?" и тд.) , но кнопку ни в коем случае не дизабли. Ну нажмет, ну получит сообщение об ошибке - ничего страшного..
← →
GanibalLector © (2004-10-28 02:02) [10]Могу посоветовать использовать ф-цию GetDriveType.Зачем? А затем,что бы убедится что каталог будет создаваться на винте или на дискете,а не на CD
З.Ы. Хотя,это вовсе не обязательно...
← →
Andy BitOff © (2004-10-28 02:03) [11]Да, но в твоем случае это не так. Тебе заведомо не известно выйдет ли что-нибудь плохое, т.к. не знаешь есть ли каталог. А вообще, конечно же Defunct © прав, не надо пытаться почесать правое ухо левой рукой.
← →
Германн © (2004-10-28 04:01) [12]2 Мирон ©
Не забудь, что помимо "OnChange Edit"a" существует еще и "OnExit Edit"a". Это более разумный способ определить "валидность содержания". Имхо.
← →
Мирон © (2004-10-28 08:06) [13]Германн © (28.10.04 4:01) [12]
О! Дельная мысля...
2 All
Как считате, нормально будет, если при неудачной попытке запуска не показывать окошки с ошибками (там вообще проверяется не только этот Edit), а сделать как в IDE Delphi при попытке компиляции проекта - где-нибудь высвечивать списочек с "предупреждениями и советами". Или это тоже изврат?
← →
КаПиБаРа © (2004-10-28 08:36) [14]Мирон © (28.10.04 8:06) [13]
Может быть, может быть.
Мне как пользователю было бы удобно при возникновении критической ошибки, получить достаточно внятную идентефикацию ошибки. Например "Ошибка #1234 Что то не найдено". По коду в документации можно найти как устранить ошибку.
При возникновении некритических ошибок программа может выдавать свой вариант решения. Например предложить имя каталога, диапазон параметров, и т.д. Так же можно сделать возможным отключение такого "интеллектуального" поведения в программе.
← →
Defunct © (2004-10-28 18:04) [15]Мирон © (28.10.04 08:06) [13]
У вас с фантазией как?
Не сообщение об ошибке, а приглашение подправить ввод:
Табличка ->
заголовок:
"Добрый день Васийлий Пупкин (взято из реестра current_user)"
текст сообщения (с иконкой info (+64)):
"Пожалуйста, подправьте имя введенного каталога, потому что система-падла не позволяет нам создать каталог: (копия текста из эдита)
Проверьте алфавит и желательно удалите все спец. символы
Спасибо.
Fast-Downloader (C) Мирон corp. 2004".
кнопки:
"Ок, вернуться к вводу", "Подкорректировать автоматически", "Я передумал вводить".
← →
Мирон © (2004-10-28 19:48) [16]Defunct © (28.10.04 18:04) [15]
:)
Здоровый сарказм - это хорошо.
Предлагаю считать ветку закрытой.
Спасибо ответившим.
Страницы: 1 вся ветка
Текущий архив: 2004.11.14;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.048 c