Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

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

 
ников   (2006-09-25 19:42) [0]

Cruel Masters!
Обычным разделителем в десятичной дроби теперь служит точка.
Однако, как вдруг выяснилось, некоторые пользователи меняют настройки в своем Windows с точки на запятую (им так удобнее что ли). Программа, естественно, при вводе в Edit немедленно вылетает. Конечно, не очень уж трудно, хотя и громоздко, написать обработчик этой ошибки, но такое решение "в лоб" как-то некрасиво. Но с другой стороны, этот разделитель, используемый Windows, -- это системная переменная, она где-то хранится и как-то называется. Не подскажет ли кто из гуру, где ее можно найти, тогда проверку можно будет организовать до StrToFloat. Или я хочу странного?


 
Ega23 ©   (2006-09-25 19:47) [1]

DecimalSeparator + F1


 
Zeqfreed ©   (2006-09-25 20:03) [2]

> Однако, как вдруг выяснилось, некоторые пользователи меняют
> настройки в своем Windows с точки на запятую (им так удобнее
> что ли)

http://en.wikipedia.org/wiki/Decimal_separator


 
ников   (2006-09-26 10:46) [3]

To Ega23
Спасибо, друг. Действительно, все элементарно, после того, как известно имя.
To Zeqfreed
Про Comma Countries это конечно замечательно, но у тебя комп наверняка настроен на точку, как и у большинства.
Еще раз спасибо.


 
Zeqfreed ©   (2006-09-26 11:01) [4]

> [3] ников   (26.09.06 10:46)


> но у тебя комп наверняка настроен на точку, как и у большинства.

С какой, интересно, стати? В региональных настройках выбрана Российская Федерация и, соответственно, все настройки соответствуют региональному стандарту.


 
Barloggg   (2006-09-26 15:49) [5]

а я начхал.
сделал процедуру подчистки введенного в EditBox которая оставляет только первый минус, цифры и первую точку(запятую на лету превращает в точку).

а заодно избавляет от букв там где должно быть только число :)

а что, strtoint работает с региональными настройками? т.е. скомпилированная у меня программа бабахнет на других региональных настройках?


 
gdaujk ©   (2006-09-26 16:32) [6]


> Barloggg   (26.09.06 15:49) [5]


Процедура чистки - замечательный вариант. Только надо и точку и запятую заменять на DecimalSeparator...

strtoint? StrToFloat работает с

var CurrencyString: string;

var CurrencyFormat: Byte;
var NegCurrFormat: Byte;
var ThousandSeparator: Char;
var DecimalSeparator: Char;
var CurrencyDecimals: Byte;
var DateSeparator: Char;
var ShortDateFormat: string;
var LongDateFormat: string;
var TimeSeparator: Char;
var TimeAMString: string;
var TimePMString: string;
var ShortTimeFormat: string;
var LongTimeFormat: string;

var ShortMonthNames: array[1..12] of string;
var LongMonthNames: array[1..12] of string;
var ShortDayNames: array[1..7] of string;
var LongDayNames: array[1..7] of string;
var SysLocale: TSysLocale;
var EraNames: array[1..7] of string;
var EraYearOffsets: array[1..7] of Integer;
var TwoDigitYearCenturyWindow: Word = 50;

var ListSeparator: Char;


 
ников   (2006-09-27 12:37) [7]

to Barloggg & gdaujk
Идея с  чисткой и особенно с подменой точки-запятой на DecimalSeparator просто прелесть. Это решение проще, чем обработка ошибки ввода. Сделал, получилось. Правда, были трудности со значениями "по умолчанию", занесенными в Edit. Их пришлось считывать, исправлять, записывать обратно  и еще врать системе, что они не менялись. Смешно и непривычно теперь выглядят десятичные дроби на  "русифицированных" машинах, хотя это и какая-никакая подсказка пользователю -- как надо "правильно" вводить. (Хотя, если он и сделает "по-старому", то его подправят).



Страницы: 1 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
2-1159188905
Crazy monkey
2006-09-25 16:55
2006.10.15
Курсы $ и евро.


2-1159354453
mfender
2006-09-27 14:54
2006.10.15
Прелотвращение работы методов в Design Time


2-1159272126
flaxe
2006-09-26 16:02
2006.10.15
Комбинации символов


2-1159245101
Dima K
2006-09-26 08:31
2006.10.15
CheckBox в ячейке DBGrid


2-1159176559
mfender
2006-09-25 13:29
2006.10.15
AccesViolation в XML