| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Подмена символа для диалога |
| Автор: Proletariy 1.12.2008, 19:29 |
| Следующая проблема. Есть диалоговое окно. В окне есть некоторое колличество текстовых полей ввода CEdit. Кождому полю присвоена переменная типа float. Недостаток в том, что когда прописывается целая и дробная часть через запятую при выполнении оператора UpdateDate машина отбрасывает все что после запятой и число на выполнение идет как целое без учета дробной части. С точкой такой проблемы не возникает. Можно ли в целом для диалогового окна запустить замену "на лету" знака запятой на точку. onChar - ????? У меня не получилось. |
| Автор: nk19 1.12.2008, 19:56 |
| C MFC не работал, но мне кажется, что не надо такие трюки делать. В панели управления -> Язык и региональные настройки разделитель целой и дробной части сейчас какой стоит? Если сделаешь автоматическую замену, то при других настройках разделителя ИМХО программа не будет работать корректно. |
| Автор: aram90 1.12.2008, 20:57 |
| Надо поменять тип с float на CString, потом найти в ручную запятую и заменить на точку. Потом вызываем функцию atof (библиотека stdlib.h), чтобы конвертировать строку в число. Это выглядит так: CString str="55.68"; float x=atof(str.GetBuffer(1)); |
| Автор: Proletariy 2.12.2008, 09:33 | ||
| Спасибо за ответы. Дело в том, что приложение уже написано и менять тип float на CString затруднительно 50-55 полей ввода 7 диалогов. На будущее конечно буду создавать свой класс CMyEdit который будет считывать строковую переменную и с помощью atof переводить ее в числовую. Кстати atof хорошая функция. Переводит строку в число независимо от знака разделителя.
Об этом я не думал. Видимо придется оставить все как есть. А жаль)) |