Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Подмена символа для диалога


Автор: Proletariy 1.12.2008, 19:29
Следующая проблема.
Есть диалоговое окно. В окне есть некоторое колличество текстовых полей ввода CEdit. Кождому полю присвоена переменная типа float. 

Недостаток в том, что когда прописывается целая и дробная часть через запятую при выполнении оператора UpdateDate машина отбрасывает все что после запятой и число на выполнение идет как целое без учета дробной части. С точкой такой проблемы  не возникает.

Можно ли в целом для диалогового окна запустить замену "на лету" знака запятой на точку. onChar - ????? У меня не получилось.  smile 

Автор: 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 хорошая функция. Переводит строку в число независимо от знака разделителя.

Цитата

Если сделаешь автоматическую замену, то при других настройках разделителя ИМХО программа не будет работать корректно.

Об этом я не думал.  smile 


Видимо придется оставить все как есть. А жаль))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)