Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Ошибка Invalid File Name   Найти похожие ветки 

 
Германн ©   (2005-09-20 18:04) [0]

Может ли сабж возникнуть по каким либо еще причинам, кроме банальных, типа использования недопустимых символов?


 
Reindeer Moss Eater ©   (2005-09-20 18:11) [1]

Конечно может.

if filename <> "my_favorite_file_name.txt" then
Raise Exception.Create("Invalid Filename");


 
Hamster ©   (2005-09-20 18:16) [2]

Насчет Filename - не знаю, а вот папка не может иметь имен:

con
com1-com9
lpt1-lpt9
null


 
IceBeerg ©   (2005-09-20 18:20) [3]

Германн ©   (20.09.05 18:04)
Приведи код...


 
Германн ©   (2005-09-20 18:20) [4]

2 Reindeer Moss Eater ©   (20.09.05 18:11) [1]
Не тот случай точно!

Сие исключение скорее всего возникает в стандартном MMSystem.


 
Германн ©   (2005-09-20 18:26) [5]

Уточню ворос. Не может ли это быть связано с каким-либо настройками XP в области администрирования?
Потому, что ошибка есть только на одном объекте.


 
Reindeer Moss Eater ©   (2005-09-20 18:27) [6]

При чем здесь случай?
Ты спросил про "может", я сказал, что может.


 
Digitman ©   (2005-09-20 18:30) [7]


> Сие исключение скорее всего возникает в стандартном MMSystem


ну так локализуй его !

какие проблемы-то ?)

исходники ж имеются)..


 
Германн ©   (2005-09-20 19:09) [8]

2 Digitman ©   (20.09.05 18:30) [7]

> исходники ж имеются)..


Исходники чего? winmm.dll? Их нет у меня. :(


 
Digitman ©   (2005-09-21 08:25) [9]


> Германн ©   (20.09.05 19:09) [8]


приведи дословно текст в сообщении об исключении ..


 
Чапаев ©   (2005-09-21 09:39) [10]

> [2]
И для файлов тоже справедливо. Ещё ты не упомянул AUX и PRN.


 
Германн ©   (2005-09-21 13:18) [11]

2 Digitman ©   (21.09.05 08:25) [9]

Строка из моего логфайла:
01.09.2005 8:09:07-EInOutError : Invalid filename

пишется строка в логфайл так:
В Application.OnException
St:=DateTimeToStr(Now)+"-"+ E.ClassName+" : "+E.Message;


 
Digitman ©   (2005-09-21 13:25) [12]

так... а с чего ты взял , что следы здесь ведут в MM-подсистему ?


 
Германн ©   (2005-09-21 13:38) [13]

Потому что имя файла передается в функцию PlaySound.


 
Digitman ©   (2005-09-21 13:47) [14]

каково же оно (имя файла) выглядит дословно в данной ситуации ?


 
evvcom ©   (2005-09-21 13:50) [15]

а если закоммментарить вызов PlaySound, ошибка исчезает? Тогда смотреть на каком именно имени валится exception


 
Германн ©   (2005-09-21 14:03) [16]

2
Digitman ©   (21.09.05 13:47) [14]
evvcom ©   (21.09.05 13:50) [15]

Экспериментировать буду завтра. На том объекте, где это все случилось. О результатах сообщу, если кому интересно будет.
Но суть в том, что эта программа работает уже около 8 лет у сотен покупателей. С ней случалось всякое, но такого пока не было. :(
Хотел просто заранее узнать в какие стороны еще копать, чтобы не задерживать клиентов.


 
Германн ©   (2005-09-21 14:03) [17]

Удалено модератором


 
Anatoly Podgoretsky ©   (2005-09-21 14:09) [18]

Германн ©   (21.09.05 13:18) [11]
Вот здесь неплохо бы иметь и имя файла


 
Anatoly Podgoretsky ©   (2005-09-21 14:15) [19]

И как я понял ты используешь глобальный последний обработчик ошибки, после которого выход из программы. А устойчивые к сбоям программы обрабатывают ошибку по месту выполнения операции и продолжают работать дальше.


 
Германн ©   (2005-09-21 14:15) [20]

2 Anatoly Podgoretsky ©   (21.09.05 14:09) [18]

> Германн ©   (21.09.05 13:18) [11]
> Вот здесь неплохо бы иметь и имя файла


А как его здесь поиметь?
В EInOutError нет информации об имени файла :(


 
Digitman ©   (2005-09-21 14:40) [21]


> Германн ©   (21.09.05 14:15) [20]


> А как его здесь поиметь?


ты не заболел ли ?

протоколируй ВСЕ вызовы PlaySound, выясни, при каком значении 1-го параметра происходит отказ


 
Fay ©   (2005-09-21 14:46) [22]

2 Hamster ©   (20.09.05 18:16) [2]
не null, а nul


 
Германн ©   (2005-09-21 15:04) [23]

2 Digitman ©   (21.09.05 14:40) [21]

Именно это сейчас и делаю.
Завтра буду у клиента на объекте смотреть.
А Германн ©   (21.09.05 14:15) [20] написано в контексте [18]


 
Anatoly Podgoretsky ©   (2005-09-21 15:10) [24]

Германн ©   (21.09.05 14:15) [20]
Это есть по месту выполнения операции, обрабатывай ошибки там.


 
umbra ©   (2005-09-21 15:14) [25]

Это очень похоже на то, что у пользователя, запускающего прогу нет прав на чтение (или исполнение) или самого файла или какой-то папки по пути к нему (если речь идет о ХР, 2000, 2003


 
Германн ©   (2005-09-22 01:51) [26]

Блин!
А может быть до PlaySound и не доходит. :(
Сейчас обнаружил, что если я удалю свой каталог для временных WAV"ов, то выдается такая же ошибка. Т.е. по аналогии с ТР должно бы быть "Path not found", но однако - InvalidFileName. :(
И как тут быть?

Но проверил свой инсталлятор, вышеописанный каталог должен создавться!


 
Германн ©   (2005-09-22 02:21) [27]

Ну да.
А с другой стороны, а как производится анализ "валидности" имени файла?
Имхо, "\" должно иметь смысл - переход в подкаталог! Но вдруг у MS другой алгоритм?


 
Digitman ©   (2005-09-22 08:28) [28]


> Германн ©   (22.09.05 01:51) [26]


> может быть до PlaySound и не доходит


ну начинается !)

то доходит, то не доходит ..

ты уж определись для начала, КАКАЯ конкретно строчка твоего кода при своем исполнении возбуждает искл.ситуацию, потом и разговор предметный будет о причинах происходящего ..


 
Германн ©   (2005-09-22 16:10) [29]

Таки да.
Проблема была в том, что программа пыталась создавать временный звуковой файл с именем <INSTALLDIR>/SOUND/TEMP/NNNN.WAV, а инсталлятор создал папку <INSTALLDIR>/SOUND/TMP :(


 
Германн ©   (2005-09-23 01:10) [30]

Таки есть некая "подлянка" от Борланда.
В 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-23 02:00) [31]

Нужно было использовать ForceDirectories или функциональный аналог, а не ожидать милости от Борланда ;p


 
Германн ©   (2005-09-23 02:35) [32]

2 Джо ©   (23.09.05 02:00) [31]
Честно говоря, я и не ожидал "милости от Борланда!"
Но надеялся (может быть напрасно) на некую "приемственность".
Т.е. на "совместимость версий "сверху-вниз"" :(

То есть, если Вам при установке программы нужно создать некую иерархию служебных подкаталогов(папок), неужели вы будете каждый раз при запуске программы или еще когда пользовать  ForceDirectories?

Но и суть то не в этом, существует ли каталог(папка) с таким именем! Суть в том, что что "сообщение об ошибке" в этом случае стало менее конкретным, чем оно было ранее!


 
Джо ©   (2005-09-23 02:42) [33]


> То есть, если Вам при установке программы нужно создать
> некую иерархию служебных подкаталогов(папок), неужели вы
> будете каждый раз при запуске программы или еще когда пользовать
>  ForceDirectories?

Вообще-то, я так и делаю :) Может, оно и не оправдано и т.д., но пару раз крупно нарвался с шибко умными пользователями, теперь никогда не полагаюсь на структуру каталогов, где бы она ни использовалась... Не в качестве похвальбы - просто к слову ;-)


 
Германн ©   (2005-09-23 02:55) [34]

2 Джо ©   (23.09.05 02:42) [33]

А что вы скажете на "права" пользователей!
ИМХО, есс-но, что на каталог в который устанавливается программа, права "наверно?" есть". А на те, которые ForseDirectories?



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.038 c
1-1127379430
VID
2005-09-22 12:57
2005.10.16
Как отключить автоцентрирование найденной записи в EhDBGrid


3-1125819377
Hata
2005-09-04 11:36
2005.10.16
Как программно очистить всю таблицу от записей?


14-1127844074
LordOfRock
2005-09-27 22:01
2005.10.16
Ульяновск


14-1127815480
Vlad Oshin
2005-09-27 14:04
2005.10.16
Рассказик. С Новым Годом.


2-1126873939
чайник5
2005-09-16 16:32
2005.10.16
fastreport