Форум: "Базы";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизПроблема Decimal Symbol (Разделитель дроб. части) Найти похожие ветки
← →
Alex Chu (2002-10-25 14:09) [0]Здравствуйте!
Существует ряд проблем с разделителем дробной части в программе.
Хочется програмно контролировать этот параметр, который настраивается в региональных натройках ОС семейства win...
Нужно, не меняя для всей ОС, использовать в своей программе только ТОЧКУ в качестве этого разделителя.
Насколько я понимаю, что этот параметр и передается любой запускаемой программе при инициализации.
← →
Johnmen (2002-10-25 14:15) [1]DecimalSeparator:=".";
но при редактировании float в гриде - берется из региональных настроек...
← →
passm (2002-10-25 14:15) [2]Alex Chu (25.10.02 14:09)> И причем здесь БД?
См. модуль SysUtils: procedure GetFormatSettings наведет тебя на решение.
← →
Alex Chu (2002-10-25 14:24) [3]passm © (25.10.02 14:15), проблемы возникают и при формировании текста sql-запроса на основе введенных данных в элементах управления, где присутствует формат отображения, который и берется из региональных настроек!
← →
stone (2002-10-25 14:28) [4]т.е. ты передаешь в запрос в качестве параметра значение цифры в виде строки?
← →
passm (2002-10-25 14:31) [5]Alex Chu (25.10.02 14:24)> Не понятно. Ты в запрос передаешь число как строку и в качестве разделителя используешь локальную настройку? Если да, то почему бы не попробовать через параметры - большинство проблем отпадает.
← →
Alex Chu (2002-10-25 14:33) [6]stone © (25.10.02 14:28), угу!
Разбираюсь в имеющихся исходниках, где цифирь из dbedit вставляются в текст запроса св-вом " "+dbedit.text+" "
← →
stone (2002-10-25 14:37) [7]а почему бы вместо dbedit.text не использовать Field.AsString
← →
passm (2002-10-25 14:38) [8]Alex Chu (25.10.02 14:33)> Замени DBEdit.Text на DBEdit.Field.AsString
← →
Alex Chu (2002-10-25 14:42) [9]К сожалению, проблемы с синтаксисом получаемого запроса остаются именно в месте вставляемого числа.
← →
stone (2002-10-25 14:45) [10]тогда напиши строковую функцию типа replace и подставляе значение через нее
... + replace(dbedit.text, DecimalSeparator, ".") + ...
← →
Gauss (2002-10-26 00:22) [11]У меня тоже возникла эта проблема и я уже хотел написать ф-цию replace, но обнаружил, что в Delphi 7 они сами сделали это:
GetLocaleFormatSettings(LocaleID,FormatSettings);
Edit2.Text := FloatToStr(StrToFloat(Edit1.Text),FormatSettings);
Если в качестве разделителя нужна ".", то можно взять
LocaleID := $409;
← →
kaif (2002-10-26 01:17) [12]Чтобы не было таких проблем народ вообще-то использует ParamByName(...).AsFloat :=
а не подстановку в виде строки в текст запроса.
К тому же такой параметризованный запрос можно подготовить (Prepare), что иногда выгодно.
← →
Johnmen (2002-10-26 01:30) [13]>kaif © (26.10.02 01:17)
Вот именно !
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c