Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 08:53   #1
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
Вопрос Проблема с FormatSettings.DecimalSeparator

Проблема в сабже. Программа работает n-ное время совершенно стабильно (потом начинает логгировать ошибки валом, один раз работала 2 суток, другой раз 3 часа и каждый раз по-разному), но потом начинает валиться на парсинге строки, именно на конвертации строкового параметра в дробное число, код:
Код:
LcvStr:=LcvStr+(IntToStr(Round(StrToFloat(LsTempList[8])*1.852)))+';';
LsTempList.LineBreak = ',', говорю сразу, чтобы не предлагали смотреть свой код на эту ошибку. Я в курсе парсинга стринглиста.
Начал логгирование всех возможных параметров, в т.ч. и сабжевое значение. В итоге в лог-файле вижу такое:
Код:
[27.02.2012 17:59:14]
TTCPClientThread.Execute.ConvertTR600ToNeotech:
trq: GSr,354660048526167,3,270212,140610,E03817.0202,N4642.8527,0,17.62,322,18,0.6,e080,13580,0,0,0,0*16!
Separator: ,
Speed: 17.62
Хотя в dpr-файле проекта стоит строка:
Код:
FormatSettings.DecimalSeparator:='.';
Т.е. код рабочий, работает корректно совершенно разные промежутки времени, и неожиданно и необоснованно начинает валиться. Проблема в сбиении децимал-сепаратора на дефолтный.
Версия Delphi XE, глобальной переменной DecimalSeparator не пользуюсь как устаревшей.
Какие могут быть соображения? Делфи течет и компилятор в неадеквате?
"ковыряю изнутри" (с)

Последний раз редактировалось 3D Hunter; 28.02.2012 в 08:55.
3D Hunter вне форума Ответить с цитированием
Старый 28.02.2012, 09:20   #2
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Программа вылетает или просто ошибки показывает?
Aliens_wolfs вне форума Ответить с цитированием
Старый 28.02.2012, 09:25   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Возможно поможет
Код:
Application.UpdateFormatSettings:=False;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.02.2012, 09:36   #4
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Программа продолжает работать, т.к. ошибка защищена try..except и в случае ошибки логгирует то, что я написал выше.
P.S. Спасибо, Аватар, попробую! Не знал, что винда может посылать сообщение WM_SETTINGCHANGE всем top-level окнам и что из этого следует... Может и поможет, проверим.
"ковыряю изнутри" (с)

Последний раз редактировалось 3D Hunter; 28.02.2012 в 09:50.
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
decimalseparator:='.'; НЕ РАБОТАЕТ bochkarev Общие вопросы Delphi 3 11.03.2009 21:37
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37