Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.12.2007, 21:01
WcN WcN вне форума
Прохожий
 
Регистрация: 14.12.2007
Сообщения: 7
Репутация: 10
По умолчанию Как проверить, авляется число из строки Integer?

Числа вводятся в StringGrid и потом после StrToInt обрабатываются.
Как можно организовать такую проверку, чтобы кроме целых чисел ничего туда не вводилось? Может существуют маски или что-то подобное.Спасибо
Ответить с цитированием
  #2  
Старый 14.12.2007, 21:07
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Можно просто применить данное число какой-то переменной типа Integer и обрабатывать все ошибки.
Например:
Код:
try
...
код
...
except
... 
обработка ошибки (ввод числа не Integer)
...
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #3  
Старый 14.12.2007, 21:08
Sava Sava вне форума
Прохожий
 
Регистрация: 14.12.2007
Сообщения: 1
Репутация: 10
По умолчанию

а может читать стринг и в сринге смотреть если ли разделитель дробной и целой части?
Ответить с цитированием
  #4  
Старый 14.12.2007, 22:10
WcN WcN вне форума
Прохожий
 
Регистрация: 14.12.2007
Сообщения: 7
Репутация: 10
По умолчанию

Наверное тут вариант SAVA больше подойдет(спасибо), ибо пишу для второкурсника курсовую и исключения они не проходили еще. Я не уточнил в вопросе зачем мне это - так вот: с помощью стринг грида я вывожу матрицу 10х10 с возможностью автозаполнения и ручного ввода. По заданию элементы матрицы - целые числа. Может есть более удобный вариант кроме стринг грида? Я начал делать с ним и почти закончил(все работает и на 3 покатит), но уже для себя решил, что преподаватель легко может прицепиться к тому, что нет проверки вводимых значений. Думал ограничится месадж боксом при старте с текстом вроде "Вводить только целые" - но это, согласитесь, не серьезно!
Ответить с цитированием
  #5  
Старый 14.12.2007, 23:22
Аватар для 4erep_88
4erep_88 4erep_88 вне форума
Новичок
 
Регистрация: 18.07.2007
Сообщения: 51
Репутация: 15
По умолчанию

Еще вариант: в процедуре OnKeyPress запретить ненужные символы.
Я сам всегда использую StringGrid, когда пишу проги для работы с матрицами. Меня он полностью устраивает
Ответить с цитированием
  #6  
Старый 14.12.2007, 23:40
WcN WcN вне форума
Прохожий
 
Регистрация: 14.12.2007
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от 4erep_88
Еще вариант: в процедуре OnKeyPress запретить ненужные символы.
Я сам всегда использую StringGrid, когда пишу проги для работы с матрицами. Меня он полностью устраивает

Никогда так не делал, но идею понял!
Это что-то в этом роде:
исли код клавиши <,>,= чему-то, то разрешить ввод=False
или если символ входит в [1..10] то разрешить ввод=True
А каким образом запрещать ввод?
Ответить с цитированием
  #7  
Старый 15.12.2007, 01:31
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
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  
Старый 15.12.2007, 07:32
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

Код:
if not (key in ['1', '2','3', '4','5','6','7','8','9', '0',#8]) then key:=#0;
все же это лучше по-моему)
Ответить с цитированием
  #9  
Старый 15.12.2007, 08:00
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от Burka
Код:
if not (key in ['1', '2','3', '4','5','6','7','8','9', '0',#8]) then key:=#0;
все же это лучше по-моему)

Вправо-влево пользователю двигать курсор запретим? Выделение Shift`ом тоже? Home/End? Копирование/вставку? Или все клавиши перечислим?
Ответить с цитированием
  #10  
Старый 15.12.2007, 08:06
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от Rosenkrantz
Вправо-влево пользователю двигать курсор запретим? Выделение Shift`ом тоже? Home/End? Копирование/вставку? Или все клавиши перечислим?

А, виноват. Это все тут ни при чем, оно в другом событии.
Подумав: но с Copy/Paste проблема все равно остается.

Последний раз редактировалось Rosenkrantz, 15.12.2007 в 08:12.
Ответить с цитированием
  #11  
Старый 15.12.2007, 10:09
WcN WcN вне форума
Прохожий
 
Регистрация: 14.12.2007
Сообщения: 7
Репутация: 10
По умолчанию Спасибо

Спасибо всем! Буду пробовать эти варианты. Я так понял, что отказываться от стринг грида не нужно.
Ответить с цитированием
  #12  
Старый 19.12.2007, 16:32
VIR VIR вне форума
Прохожий
 
Регистрация: 19.12.2007
Сообщения: 8
Репутация: 10
По умолчанию

а про спец симолы забыл???????????
так не пойдет
Ответить с цитированием
  #13  
Старый 23.12.2007, 09:44
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
try
StrToInt(Строка)
//В строке записано число
except
//Ошибка
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.

Последний раз редактировалось The Shadow, 25.12.2007 в 17:08.
Ответить с цитированием
  #14  
Старый 24.12.2007, 19:44
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Смех Небольшая поправочка

Я не умничаю , просто делаю более понятнее.
Код:
try
StrToInt(Строка)
//В строке записано число
except
//Ошибка
end;
Ответить с цитированием
  #15  
Старый 24.12.2007, 19:57
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

А я разве не то же написал:
http://www.delphisources.ru/forum/sh...58&postcount=2
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter