Напишу в юмор, хотя смеяться или плакать - не знаю.
Не уверена, что все оценят, но те, кто имеют дело с компьютерами, наверное посмеются.
Краткое вступление - мой коллега написал некую программу для обработки данных. Она никак не устанавливается, просто запускаешь exe-шник и все работает. Жмешь кнопочку "выбрать файл", выбираешь, прога считывает из него кое-какие данные (частоту дискретизации) и готова к дальнейшей работе. Все были довольны. Потом коллега уехал в отпуск. Мой шеф убывает в командировку и попросил эту прогу скопировать ему на ноут, чтобы он в москве мог с ней работать.
На ноуте у него Виндоус 7, на всех остальных, где до этого использовали - Виндоус ХР.
Скопировала, убедилась, что прога запускается и со спокойной душой пошла заниматься своими делами. Через 5 минут шеф зовет - программа данные не обрабатывает.
Подхожу, запускаю, выбираю файл, убеждаюсь, что пресловутую частоту программа не считывает. Озадачиваюсь. Проверяю права на доступ к файлу, запускаю от имени админа - не помогает.
Захожу по сети в расшаренную папку коллеги, запускаю его программу оттуда, убеждаюсь, что данные не считывает. Пробую разные файлы данных, в т.ч и те, что лежат в расшаренной папке коллеги.
В процессе перебора один файл неожиданно считался. Хватаюсь как утопающий за соломинку, копирую этот файл на компьютер шефа - считывается. Для пробы копирую файл в разные папки, запускаю прогу - файл считывается. Соседний - не считывается. Обалдеваю, начинаю сравнивать содержимое до буквы и точки - первый считывается, второй нет. Плюнув, перезаписываю содержимое второго файла так, чтобы он был полностью идентичен первому, выставляю абсолютно одинаковы правда на доступ.... первый считывается, второй - нет.
Чувствуя, что близка к помешательству, переименовываю "рабочий" файл во что-то другое, а второму присваиваю имя рабочего. Ага, считался. Каким-то загадочным образом дело в имени файла.
Может слишком длинное "родное" имя (оно и правда, весьма длинное, в то время как имя рабочего файла 5 символов)? Сокращаю, делаю полностью по образу и подобию рабочего - не считывается.
Сижу туплю... снова обзываю второй файл как рабочий, но восстанавливаю его родное содержимое.
Считываю и.... считываться то оно считывается, но данные совсем не те, что в нем записаны. А те, которые были в исходно запускавшемся файле.
Мысленно обрушиваю на голову программеров микрософта проклятья и гадаю, могли ли они где-нибудь что-нибудь так сурово закэшировать. Прихожу к выводу, что скорее всего - нет.
Мог ли коллега извратиться и сделать так, что при каких-то условиях запускается только файл с таким именем и таким содержимым?
Вряд ли.
Однако, ниточка есть. Размышляю, замечаю особенность - в папке у коллеги файл данных лежит рядом с самой программой.
Начинает что-то брезжить в мозгах. Бегу на его комп, переименовываю файл данных в "вася".
Запускаю прогу по сети на компе шефа, выбираю доселе благополучно читавшийся файл... вуаля - ни читается. Переименовываю в "вася" - читается. Красота.
Снова бегу на комп коллеги, меняю содержимое файла. Открываю "васю", лежащего на компе у шефа...
Правильно, открывается, но с тем содержимым, что лежит на удаленном компе.
Осталось понять, что все это означает.
И сошло на меня озарение.
По каким-то причинам под Виндоус 7 программа напрочь игнорирует путь, по которому находится открываемый файл и считает, что он лежит там же, где сама прога. Если там по счастливой случайности и правда лежит файл с таким именем - без зазрения совести открывает (даже если нужный файл совсем в другом месте и с другим содержимым). Причем, запускаясь по сети, прога добросовестно искала файл рядом с собой - в сетевой папке.
Уффф.. душевное равновесие восстановлено