![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка Invalid File Name [D4, WinXP]
Германн © (2005-09-20 18:04:00)Может ли сабж возникнуть по каким либо еще причинам, кроме банальных, типа использования недопустимых символов?
Германн (2005-09-23 02:55:00) [1]2 Джо © (23.09.05 02:42) [33]
А что вы скажете на "права" пользователей!
ИМХО, есс-но, что на каталог в который устанавливается программа, права "наверно?" есть". А на те, которые ForseDirectories?
Джо (2005-09-23 02:42:00) [2]
> То есть, если Вам при установке программы нужно создать
> некую иерархию служебных подкаталогов(папок), неужели вы
> будете каждый раз при запуске программы или еще когда пользовать
> ForceDirectories?
Вообще-то, я так и делаю :) Может, оно и не оправдано и т.д., но пару раз крупно нарвался с шибко умными пользователями, теперь никогда не полагаюсь на структуру каталогов, где бы она ни использовалась... Не в качестве похвальбы - просто к слову ;-)
Германн (2005-09-23 02:35:00) [3]2 Джо © (23.09.05 02:00) [31]
Честно говоря, я и не ожидал "милости от Борланда!"
Но надеялся (может быть напрасно) на некую "приемственность".
Т.е. на "совместимость версий "сверху-вниз"" :(
То есть, если Вам при установке программы нужно создать некую иерархию служебных подкаталогов(папок), неужели вы будете каждый раз при запуске программы или еще когда пользовать ForceDirectories?
Но и суть то не в этом, существует ли каталог(папка) с таким именем! Суть в том, что что "сообщение об ошибке" в этом случае стало менее конкретным, чем оно было ранее!
Джо (2005-09-23 02:00:00) [4]Нужно было использовать
ForceDirectoriesили функциональный аналог, а не ожидать милости от Борланда ;p
Германн (2005-09-23 01:10:00) [5]Таки есть некая "подлянка" от Борланда.
В TP7 ReWrite(F) если имя файла включало в себя "отсутствующий" каталог, всегда (и при $I+ и при $I-) выдавало IOResult=3. Runtime error 003, Path not found.
А вот в Делфи при $I- IOResult=3 (Path not found), а при $I+ - Invalid file name. :(
Германн (2005-09-22 16:10:00) [6]Таки да.
Проблема была в том, что программа пыталась создавать временный звуковой файл с именем <INSTALLDIR>/SOUND/TEMP/NNNN.WAV, а инсталлятор создал папку <INSTALLDIR>/SOUND/TMP :(
Digitman (2005-09-22 08:28:00) [7]
> Германн © (22.09.05 01:51) [26]
> может быть до PlaySound и не доходит
ну начинается !)
то доходит, то не доходит ..
ты уж определись для начала, КАКАЯ конкретно строчка твоего кода при своем исполнении возбуждает искл.ситуацию, потом и разговор предметный будет о причинах происходящего ..
Германн (2005-09-22 02:21:00) [8]Ну да.
А с другой стороны, а как производится анализ "валидности" имени файла?
Имхо, "\" должно иметь смысл - переход в подкаталог! Но вдруг у MS другой алгоритм?
Германн (2005-09-22 01:51:00) [9]Блин!
А может быть до PlaySoundи не доходит. :(
Сейчас обнаружил, что если я удалю свой каталог для временных WAV'ов, то выдается такая же ошибка. Т.е. по аналогии с ТР должно бы быть "Path not found", но однако - InvalidFileName. :(
И как тут быть?
Но проверил свой инсталлятор, вышеописанный каталог должен создавться!
umbra (2005-09-21 15:14:00) [10]Это очень похоже на то, что у пользователя, запускающего прогу нет прав на чтение (или исполнение) или самого файла или какой-то папки по пути к нему (если речь идет о ХР, 2000, 2003
Anatoly Podgoretsky (2005-09-21 15:10:00) [11]Германн © (21.09.05 14:15) [20]
Это есть по месту выполнения операции, обрабатывай ошибки там.
Германн (2005-09-21 15:04:00) [12]2 Digitman © (21.09.05 14:40) [21]
Именно это сейчас и делаю.
Завтра буду у клиента на объекте смотреть.
А Германн © (21.09.05 14:15) [20] написано в контексте [18]
Fay (2005-09-21 14:46:00) [13]2 Hamster © (20.09.05 18:16) [2]
не null, а nul
Digitman (2005-09-21 14:40:00) [14]
> Германн © (21.09.05 14:15) [20]
> А как его здесь поиметь?
ты не заболел ли ?
протоколируй ВСЕ вызовы PlaySound, выясни, при каком значении 1-го параметра происходит отказ
Германн (2005-09-21 14:15:00) [15]2 Anatoly Podgoretsky © (21.09.05 14:09) [18]
> Германн © (21.09.05 13:18) [11]
> Вот здесь неплохо бы иметь и имя файла
А как его здесь поиметь?
В EInOutError нет информации об имени файла :(
Anatoly Podgoretsky (2005-09-21 14:15:00) [16]И как я понял ты используешь глобальный последний обработчик ошибки, после которого выход из программы. А устойчивые к сбоям программы обрабатывают ошибку по месту выполнения операции и продолжают работать дальше.
Anatoly Podgoretsky (2005-09-21 14:09:00) [17]Германн © (21.09.05 13:18) [11]
Вот здесь неплохо бы иметь и имя файла
Германн (2005-09-21 14:03:00) [18]Удалено модератором
Германн (2005-09-21 14:03:00) [19]2
Digitman © (21.09.05 13:47) [14]
evvcom © (21.09.05 13:50) [15]
Экспериментировать буду завтра. На том объекте, где это все случилось. О результатах сообщу, если кому интересно будет.
Но суть в том, что эта программа работает уже около 8 лет у сотен покупателей. С ней случалось всякое, но такого пока не было. :(
Хотел просто заранее узнать в какие стороны еще копать, чтобы не задерживать клиентов.
evvcom (2005-09-21 13:50:00) [20]а если закоммментарить вызов PlaySound, ошибка исчезает? Тогда смотреть на каком именно имени валится exception