|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как проверить, авляется число из строки Integer?
Числа вводятся в StringGrid и потом после StrToInt обрабатываются.
Как можно организовать такую проверку, чтобы кроме целых чисел ничего туда не вводилось? Может существуют маски или что-то подобное.Спасибо |
#2
|
||||
|
||||
Можно просто применить данное число какой-то переменной типа Integer и обрабатывать все ошибки.
Например: Код:
try ... код ... except ... обработка ошибки (ввод числа не Integer) ... Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#3
|
|||
|
|||
а может читать стринг и в сринге смотреть если ли разделитель дробной и целой части?
|
#4
|
|||
|
|||
Наверное тут вариант SAVA больше подойдет(спасибо), ибо пишу для второкурсника курсовую и исключения они не проходили еще. Я не уточнил в вопросе зачем мне это - так вот: с помощью стринг грида я вывожу матрицу 10х10 с возможностью автозаполнения и ручного ввода. По заданию элементы матрицы - целые числа. Может есть более удобный вариант кроме стринг грида? Я начал делать с ним и почти закончил(все работает и на 3 покатит), но уже для себя решил, что преподаватель легко может прицепиться к тому, что нет проверки вводимых значений. Думал ограничится месадж боксом при старте с текстом вроде "Вводить только целые" - но это, согласитесь, не серьезно!
|
#5
|
||||
|
||||
Еще вариант: в процедуре OnKeyPress запретить ненужные символы.
Я сам всегда использую StringGrid, когда пишу проги для работы с матрицами. Меня он полностью устраивает |
#6
|
|||
|
|||
Цитата:
Никогда так не делал, но идею понял! Это что-то в этом роде: исли код клавиши <,>,= чему-то, то разрешить ввод=False или если символ входит в [1..10] то разрешить ввод=True А каким образом запрещать ввод? |
#7
|
|||
|
|||
Код:
function IsInteger(const S: String): Boolean; var X: Double; E: Integer; begin Val(S, X, E); Result := (E = 0) and (Trunc(X) = X); end; |
#8
|
|||
|
|||
Код:
if not (key in ['1', '2','3', '4','5','6','7','8','9', '0',#8]) then key:=#0; |
#9
|
|||
|
|||
Цитата:
Вправо-влево пользователю двигать курсор запретим? Выделение Shift`ом тоже? Home/End? Копирование/вставку? Или все клавиши перечислим? |
#10
|
|||
|
|||
Цитата:
А, виноват. Это все тут ни при чем, оно в другом событии. Подумав: но с Copy/Paste проблема все равно остается. Последний раз редактировалось Rosenkrantz, 15.12.2007 в 08:12. |
#11
|
|||
|
|||
Спасибо
Спасибо всем! Буду пробовать эти варианты. Я так понял, что отказываться от стринг грида не нужно.
|
#12
|
|||
|
|||
а про спец симолы забыл???????????
так не пойдет |
#13
|
||||
|
||||
Код:
try StrToInt(Строка) //В строке записано число except //Ошибка end; Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. Последний раз редактировалось The Shadow, 25.12.2007 в 17:08. |
#14
|
||||
|
||||
Небольшая поправочка
Я не умничаю , просто делаю более понятнее.
Код:
try StrToInt(Строка) //В строке записано число except //Ошибка end; |
#15
|
||||
|
||||
А я разве не то же написал:
http://www.delphisources.ru/forum/sh...58&postcount=2 Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|