СообЧа > База Знаний > Программирование > C, С++ > Borland C++ Builder

Вопрос

В ВСВ 6 нужно в компоненте Edit ввести число типа double. Обрабатывается так:

double a=Edit->Text.ToDouble();

При запуске приложения в окошке Edit вводится целое число(к примеру 18) — все в порядке, ошибок нет, а если ввести число с запятой (например 5.1248), то вываливается в отладчик с сообщением: 5.1248 is not a valid floating point value. Подскажите, пожалуйста, где и что я делаю не так? Основная цель — считать несколько цифр, подставить их в формулу и вывести результат. А может мне вообще другим компонентом воспользоваться?

Ответ

Попробуй вместо точки ввести запятую. если не вылетит — значит дефолтовый разделитель в твоей системе запятая. Тогда тебе надо будет делать так — определяешь дефолтовый десятичный разделитель

char DecimalDefault = ""; char Buffer[2] = {0}; if (GetLocaleInfo(GetThreadLocale(), LOCALE_SDECIMAL, Buffer, 2) > 0) DecimalDefault = Buffer[0]; else DecimalDefault = ".";

далее — смотришь, есть ли в строчке из Edit->Text символы '.' или ',' и если они есть, то заменяешь из на DecimalDefault потом конвертишь все с помощью функции FloatToStr

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация