![]() |
|
![]() ![]() ![]() |
|
Гость_Артем |
|
|||
Unregistered |
Здравствуйте! Я написал программу в С++ Builder 6, в которой используются дробные числа. Ввод данных осуществляется при помощи текстовых окон LabeledEdit. На моём компьютере (у меня Windows XP) дробные числа вводить нужно с запятой (например 3,14159), а если программу запустить на компьютере с ОС Wndows 98, то нужно вводить числа с точкой (например 3.14159). Иначе появляется сообщение об ошибке:"... is not a valid floating point value". Подскажите мне, пожалуйста, как сделать так, чтобы числа можно было вводить и с точкой и с запятой вне зависимости от ОС.
![]() |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
float Num;
Num = StrToFloat( StringReplace(LabeledEdit1->Text, '.', ',', TReplaceFlags()<< rfReplaceAll) ); -------------------- СУВ, Partizan. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
Partizan, а если на другой машине тоже нужно вводить с точкой? ;)
нужно на DecimalSeparator менять... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Гость_Артем |
|
|||
Unregistered |
Большое Вам спасибо, Partizan! Теперь программа работает. Буду Вам очень признателен, если Вы ответите еще на один вопрос: В чем причина того, что программа на одном компьютере (ОС Windows XP) выдает одни результаты, а на другом (ОС Windows 98) - совсем другие, при одних и тех же исходных данных? Может быть это было связано с тем, что на одном компьютере я вводил дробные числа через запятую, а на другом - через точку?
![]() |
|||
|
||||
Гость_Артем |
|
|||
Unregistered |
Hunter, расскажите, пожалуйста, подробнее про DecimalSeparator? Заранее спасибо
![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
если в результате ( во внутреннем представлении ) получились одинаковые числа -- то, как ты их вводил значения не имеет.
а что про него рассказывать? глобальная переменная, имеющая своим значением символ из региональных стандартов. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
bigscorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 23.5.2005 Репутация: нет Всего: нет |
float ваще отстой луче double использовать (ну это я к токому выводц пришел)
про DecimalSeparator: при вводе отлови что вбивают . или , и меняй ее на DecimalSeparator так будет лучше, и еще отлови двойной ввод . или , , ну чтобы в результате число получилось "0"+AnsiString(DecimalSeparator)+"000"; - будет точно число с плавающей точкой на любой машине, не важно какие стандарты установлены а перед этим надо подключить #include <math.h> еще хорошая вещь FormatFloat("0.00", StrToFloat(Edit->Text)) Это сообщение отредактировал(а) bigscorp - 16.1.2006, 12:40 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |