Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-45976
Dennis S
2002-11-04 14:38
2002.11.14
работа с диалогом Find


3-45665
NightCon
2002-10-24 07:09
2002.11.14
БД не работает по сети


7-46162
AndreyS
2002-09-12 20:22
2002.11.14
На чем лучше писать драйвера?


1-45809
Lexa1900
2002-11-04 23:08
2002.11.14
Flash-прозрачность


14-46050
Жаждущий ответа
2002-10-28 21:15
2002.11.14
Тип real и ему подобные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский