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

Вниз

Вещественный тип имеет привязку к раскладке клавиатуры?   Найти похожие ветки 

 
MaXie   (2002-05-08 12:46) [0]

Подкиньте, плз, идею, как граммотно реализовать?

Исходные данные:
- поле ввода Edit1;
- переменная вещественного типа A;

Есть событие:
procedure TForm1.Edit10Exit(Sender: TObject);
begin
A := StrToFloat(Edit1.Text)
end;

На первый взгляд, все тривиально и просто, но! Проблема возникает при смене языка (раскладки клавиатуры). С разделителем десятичных разрядов все понятно - ошибка возникает в конвертации типов.
Как сделать универсальным приложение (так, чтобы не возиться с настройкой разделителя десятичных разрядов в установках ОС)?


 
Alx2   (2002-05-08 12:56) [1]

IMHO использовать DecimalSeparator.
>ошибка возникает в конвертации типов.
Это как?


 
MaXie   (2002-05-08 13:11) [2]

To Alx2:
Сообщение об ошибке приходит в момент выхода из поля ввода Edit1, в котором четко указан тип исключения в ответ на возникновение которого и выдается данное окно - EConvertError. При английской раскладке, введенное число без проблем конвертируется из текстового в вещественный тип. При смене языка, происходит смена разделителя десятичных разрядов с "," на ".", соответственно, что вызывает "непонимание" приложения того, что текст "1.01", как и текст "1,01", можно перевести в вещественное число 1,01! В данном случае, символ "." рассматривается приложением, как спец. символ, но не как разделитель дробной (десятичной) части, в итоге: текст, состоящий из цифр и спец.символа, переводу в вещественный формат числа не подлежит!

>IMHO использовать DecimalSeparator.
Можно чуть по-подробней?


 
Alx2   (2002-05-08 13:15) [3]

>Можно чуть по-подробней?
DecimalSeparator дает символ, являющийся разделителем целой и дробной частей. Можно "в лоб" посмотреть, что мы собираемся конвертировать и заменить все "." или "," на DecimalSeparator, а потом - конвертировать.


 
Johnmen   (2002-05-08 13:52) [4]

Еще добавлю, что если раскладка Англ., то кнопа Del в NumPade есть "точка", а если Рус., то "запятая".
Выводы понятны... :)



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
3-64455
Myrs
2002-04-24 20:12
2002.05.20
QuickRep


3-64549
ao1973
2002-04-23 21:25
2002.05.20
BDE не хочет юзать MSACESS


1-64564
Mikeee
2002-05-03 15:50
2002.05.20
Опять про время...


3-64477
Пикулев Евгений
2002-04-22 14:28
2002.05.20
Ошибка


1-64635
Dyacha
2002-05-08 12:46
2002.05.20
как можно реализовать печать книжкой