Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

Нужно проверить возможность создания каталога, не создавая его   Найти похожие ветки 

 
Мирон ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.033 c
14-1098798518
oldman
2004-10-26 17:48
2004.11.14
Я ЕЕ ТАКИ РЕШИЛ!!!


14-1098437286
Chuk4
2004-10-22 13:28
2004.11.14
А вот если я получил REadOnly


14-1098702718
}|{yk
2004-10-25 15:11
2004.11.14
Прикупил Creative SB Live! 5.1


14-1099004036
GuestTM
2004-10-29 02:53
2004.11.14
Существует ли компонент для работы с драйверами RegMon от SysInt?


14-1098802549
YurikGL
2004-10-26 18:55
2004.11.14
Официальный предствитель фирмы Microsoft





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский