Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка при вводе 
:(
    Опции темы
Neighbour
Дата 12.5.2006, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Скажите, пожалуйста, как проверить вводимую в InputBox строку - является ли она целым числом. 
PM MAIL   Вверх
comtat
Дата 12.5.2006, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 3
Всего: 71



Посимвольно

чета типа

Код

procedure TForm2.$$$KeyPress(Sender: TObject; var Key: Char);
begin
    if ((Key<#48) or (Key>#57)) then bool:=true;

  if (bool) then "типа есть число в строке"
end;


тока надо проверять не по кодам #47 и #57
коду точки или запятой 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Neighbour
Дата 12.5.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



А переменную типа string как проверить? 
PM MAIL   Вверх
Romikgy
Дата 12.5.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



ына то проверить? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 12.5.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Старая, как Pascal функция val 
Код

function IsInteger(s: string): boolean;
var i, code: integer;
begin
  val(s, i, code);
  result := code = 0;
end;
 
PM MAIL   Вверх
~FoX~
Дата 12.5.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(Neighbour @  12.5.2006,  12:25 Найти цитируемый пост)
А переменную типа string как проверить?  

А зачем ее проверять, она вроде и так стринг по жизни? 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
comtat
Дата 12.5.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 3
Всего: 71



Разбиваешь строку функцией Pos 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Snowy
Дата 12.5.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(comtat @  12.5.2006,  12:56 Найти цитируемый пост)
Разбиваешь строку функцией Pos 
Зачем? Человеку просто нужно проверит: в строке число или нет.
Для этого есть val 
PM MAIL   Вверх
Yanis
Дата 12.5.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Neighbour
Используй TryStrToInt. 

Это сообщение отредактировал(а) Yanis - 12.5.2006, 13:30


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
drkot
Дата 12.5.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



А не проще фильтровать при вводе

Код

procedure TForm2.$$$KeyPress(Sender: TObject; var Key: Char);
begin
    if not( Key in [0..9]) then key:='';
end;



и все всегда целое число   smile  


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Snowy
Дата 12.5.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Не проще. У InputBox нет событий.
Кроме того этот способ легко обходится вставкой из буфера.
Кому нужно, что и через WM_SETTEXT вставит. 
PM MAIL   Вверх
Yanis
Дата 12.5.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Мне кажется лучше использовать InputQuery вместо InputBox. Вот пример:
Код
begin
var
  s: string;
  i: Integer;
begin
  if InputQuery('Ввод строки', 'Строка должна содеражать только числовые символы:', s) then
    if TryStrToInt(s, i) then
      begin
        { код в случае, если введённая строка - "число" }
      end
    else
      ShowMessage('Неверный ввод!');
end;
  

Это сообщение отредактировал(а) Yanis - 12.5.2006, 23:23


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.