Форум — Ответы ( К темам )
? | Андрей: Как проверить тип переменной? (31-03-2003 14:12:34) |
Как проверить тип переменной? Например, в Edit->Text вводится какая-то переменнная, как определить ее тип? | |
Petro (31-03-2003 17:23:21) | |
Какой еще тип? Там всегда AnsiString. Ф-цией ToInt можешь int получить, если надо.
| |
Георгий (31-03-2003 17:24:05) | |
Ну Edit->Text по определению это тип AnsiString — т.е. только текст. А знать контекст, в котором это значение введено может только тот, кто его ввёл. В принципе вопрос не ясно поставлен. | |
Андрей (31-03-2003 18:19:14) | |
Нужно проверить, чтобы в Edit вводились только данные типа int. Как это лучше сделать?
| |
Art (31-03-2003 19:08:30) | |
Возьми TMaskEdit, не парься!
| |
Владимир (31-03-2003 19:40:22) | |
Можно пойти 2 путями — давать вводить только целые числа, или давать вводить что угодно, а потом проверять: Вариант 1 (пишем обработчик onKeyPress) // позволяем вводить целые и действительные числа void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == ',') Key = '.'; if(Key != VK_BACK && Key != '.' && !isdigit(Key)) { Key=0; return; } if(Key == '.' && Edit1->Text.Pos(".")) Key = 0; } //--------------------------------------------------------------------------- // позволяем вводить только целые числа void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key) { if(Key != VK_BACK && !isdigit(Key)) Key=0; } //--------------------------------------------------------------------------- Вариант 2. try{ int n = Edit1->Text.ToInt(); }catch(EConvertError &){ ShowMessage("Ошибка ввода !"); Edit1->SetFocus(); } Разумеется первый вариант правильней. Также не забудьте задать ограничение на количество символов (свойство MaxLength компонента Edit). А использовать TMaskEdit можно, но не советовал бы, он слишком по своему работает. | |
Георгий (31-03-2003 21:35:29) | |
а есть ещё CSpinEdit — на палитре Samples — по моему самое оно для ввода чисел.
|