none
Подмена -1 на 71 (.NET) RRS feed

  • Вопрос

  • На одном из компьютеров в офисе в программах написанных на .NET происходит мистика, все переменные со значением -1 превращаются в 71, то есть такой код:

     int i = -1;

    MessageBox.Show(i.ToString());

    Выводит на экран 71!

    Соответственно нормальная работа приложений на этом компьютере возможна до первой встречи -1 как значения переменной, а далее возможны непредсказуемые результаты...

    Написал 3 простых тестовых приложения которые выводят на экран сообщение со значением -1, так вот приложения написанные под платформой .NET (С#, VB.Net) выводят 71, а приложение написанное на С++ (MFC) выводит -1!!! То есть, как я понял проблема скрыта где-то в библиотеках .NET.

    Думаю что возможно повреждена какая-то библиотека (хотя как не представляю) и решение напрашивается само собой - попробовать переустановить фреймворк - сегодня попробуем, о результате отпишусь..

    П.С. Переустановка фреймворка - не помогла!

    П.П.С При загрузке другого профиля пользователя на данном ПК все работает хорошо (-1 = -1)! Значит проблема где-то в связке профиль - .NET, может фреймворк хранит какие-то настройки в профиле которые не затираются при переустановке?

    Как такое возможно???? Встречался ли кто с такой или подобной проблемой?



Ответы

Все ответы

  • А попробуйте long. Будет тоже самое?

    Просто они в разных структурах и можно сузить круг поиска. Это явно аномалия и если совместно удастся понять откуда она взялась лишним не будет


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    Отвечающий
  • Да и еще - какая версия .Net и повторяется ли проблема если делать в другой версии (при создании проекта можно выбрать версию Framework).


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    Отвечающий
  • Здается мне, что кто-то пошутил, и в региональных настройках, там где выставляется знак числа вбил 7 вместо тире :D
    Отвечающий
  • Спасибо большое за ответ! Все оказалось именно так... Странно что сразу про это не подумал)))

    Пытался на своем компьютере заменить - на 7 в диалоговом окне настройки региональных параметров, но  у меня не вышло, видимо это было сделано из реестра... Возможно кто-то пошутил, а возможно новый тип вируса, причем последствия могут быть опасны - от ошибки в финансовых расчетах, до ошибки которая может привести к смерти людей (например если система используется для управления исполнительными механизмами на производстве)... Ведь все отрицательные числа просто превращались в положительные... 

    Вот как вели себя запросы к БД:

    update DBA.cwh_resolutionsfordoc set res_id = 71 (здесь должно было быть -1)

     :Сообщение БД: No primary key value for foreign key 'cwh_resolutions' in table 'cwh_resolutionsfordoc'