Текущий архив: 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.46 MB
Время: 0.045 c