Автор
|
Тема: Вопрос новичка.
|
VM |
опубликован 12-10-2001 18:53 MSK
Как сделать привязку того что я ввожу в Editbox к какой-то переменной, ввожу я числовые данные,насколько я понимаю надо воспользоваться функцией atof,но как конкретно это сделать я что -то не пойму. Я понимаю ,что это ламерский вопрос,но не в одной из моих книг этого неразбирается. Хотя бы подскажите это искать в MSDN. Заранее Спасибо.
|
server_mouse
|
опубликован 12-10-2001 21:13 MSK
Воспользуйся ClassWisard вкладка Member Varibles. Привяжись к int например (для этого надо задать св-во Number у твоего эдита. И юзай ф-цию UpdateData().В общем случае гоняй GetDlgItemText() и SetDlgItemText() Ты это хотел? |
VM
|
опубликован 12-10-2001 21:29 MSK
не совсем.Для примера,у меня условно говоря, есть выражение x=z+y я просто хочу вводит значения допустим z или у , не важно чего ,через Editbox иными словами менять значения переменной. |
server_mouse
|
опубликован 13-10-2001 09:29 MSK
Ну сделай примерно так: void CMyDlg::OnButton1() //Обработчик какой-то твоей кнопки { CString str; int Num; GetDlgItemText(IDC_MY_EDIT,str); try //Мало ли чего злобный юзер может навводить... { //Да только нас такой бедой не испугаешь... Num = atoi((LPCTSTR)str ); } catch(...) {//И в правду навводил чего-то.. MessageBox("А-я-яй! Ввели не int-овое!"); return; } //Ну и делай чего хочется со своим Num. } |
VM
|
опубликован 13-10-2001 14:57 MSK
СПАСИБО ! |
migel
|
опубликован 13-10-2001 15:03 MSK
try { //Да только нас такой бедой не испугаешь... Num = atoi((LPCTSTR)str ); } catch(...) { MessageBox("А-я-яй! Ввели не int-овое!"); return; } }Собственно говоря Сообщения ты никогда не увидиш :-) поскольку atoi НЕ ВЫБРАСЫВАЕТ исключений! лучше написать свою проверку на валидность строки или на худой конец проверять на 0. |
andrewag
|
опубликован 13-10-2001 22:29 MSK
Можно просто взять и проверить каждый символ того, что юзер ввел на принадлежность к "0123456789-" или еще ".", если дробные можно... |
server_mouse
|
опубликован 14-10-2001 01:35 MSK
>atoi НЕ ВЫБРАСЫВАЕТ исключений!Верю, хотя сам никогда не проверял. Просто когда-то в раннем младенчестве делал подобные завороты именно через исключения. Проверять побайтно -- этож неинтересно. |
server_mouse
|
опубликован 14-10-2001 01:36 MSK
Забыл сказать. Делал в билдере. |
Demo_S
|
опубликован 14-10-2001 01:56 MSK
Проще действительно использовать привязки к переменным и функцию UpdateData как советовал server_mouse. Делаешь это так: в своем диалоге или чтоу тебя там,куда ты текст вводишь, вызываешь classwizard( например нажав правую кнопь мыши и бырав ClassWizard из кнтекстного меню. В появившемся окне переходишь на вкладву Member Variables ищешь там в нижнем окошке ID твоего EditBox'a (если ты его не менял, то будет что-то вроде IDC_EDIT1) . выбираешь его, жмешь Add variable. в появившемся окошке выбираешь имя новой переменной(например m_edit) и ее тип (для тебя int). жми ОК. Теперь внутри программы чтобы достать данные из EditBox'a пишешь UpdateData(true). Все, теперь твои данные находяться в переменной m_edit и ты можешь использовать ее. для вывода данных из m_edit в editbox нужно вызвать UpdateData(false). Например //ввод данных UpdateData(true); m_edit=m_edit+1; //вывод результата UpdateData(false);теперь в твоем EditBox'e будет значение на 1 больше. и исключения аппвизард за тебя сам все понаписывает. |