Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема Decimal Symbol (Разделитель дроб. части) [D5]


Alex Chu ©   (2002-10-25 14:09:00) 

Здравствуйте!
Существует ряд проблем с разделителем дробной части в программе.
Хочется програмно контролировать этот параметр, который настраивается в региональных натройках ОС семейства win...

Нужно, не меняя для всей ОС, использовать в своей программе только ТОЧКУ в качестве этого разделителя.

Насколько я понимаю, что этот параметр и передается любой запускаемой программе при инициализации.


Johnmen   (2002-10-26 01:30:00) [1]

>kaif © (26.10.02 01:17)

Вот именно !


kaif   (2002-10-26 01:17:00) [2]

Чтобы не было таких проблем народ вообще-то использует ParamByName(...).AsFloat :=
а не подстановку в виде строки в текст запроса.
К тому же такой параметризованный запрос можно подготовить (Prepare), что иногда выгодно.


Gauss   (2002-10-26 00:22:00) [3]

У меня тоже возникла эта проблема и я уже хотел написать ф-цию replace, но обнаружил, что в Delphi 7 они сами сделали это:

GetLocaleFormatSettings(LocaleID,FormatSettings);
Edit2.Text := FloatToStr(StrToFloat(Edit1.Text),FormatSettings);

Если в качестве разделителя нужна ".", то можно взять
LocaleID := $409;


stone   (2002-10-25 14:45:00) [4]

тогда напиши строковую функцию типа replace и подставляе значение через нее

... + replace(dbedit.text, DecimalSeparator, ".") + ...


Alex Chu   (2002-10-25 14:42:00) [5]

К сожалению, проблемы с синтаксисом получаемого запроса остаются именно в месте вставляемого числа.


passm   (2002-10-25 14:38:00) [6]

Alex Chu (25.10.02 14:33)> Замени DBEdit.Text на DBEdit.Field.AsString


stone   (2002-10-25 14:37:00) [7]

а почему бы вместо dbedit.text не использовать Field.AsString


Alex Chu   (2002-10-25 14:33:00) [8]

stone © (25.10.02 14:28), угу!

Разбираюсь в имеющихся исходниках, где цифирь из dbedit вставляются в текст запроса св-вом " "+dbedit.text+" "


passm   (2002-10-25 14:31:00) [9]

Alex Chu (25.10.02 14:24)> Не понятно. Ты в запрос передаешь число как строку и в качестве разделителя используешь локальную настройку? Если да, то почему бы не попробовать через параметры - большинство проблем отпадает.


stone   (2002-10-25 14:28:00) [10]

т.е. ты передаешь в запрос в качестве параметра значение цифры в виде строки?


Alex Chu   (2002-10-25 14:24:00) [11]

passm © (25.10.02 14:15), проблемы возникают и при формировании текста sql-запроса на основе введенных данных в элементах управления, где присутствует формат отображения, который и берется из региональных настроек!


Johnmen   (2002-10-25 14:15:00) [12]

DecimalSeparator:=".";
но при редактировании float в гриде - берется из региональных настроек...


passm   (2002-10-25 14:15:00) [13]

Alex Chu (25.10.02 14:09)> И причем здесь БД?
См. модуль SysUtils: procedure GetFormatSettings наведет тебя на решение.


Наверх

Титульная страница Поиск, карта сайта Написать письмо