Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2011, 21:28   #1
teres
 
Регистрация: 18.03.2011
Сообщений: 8
Смущение Проверка под Edit

Нужно написать проверку под Edit а именно при вводе символа или буквы (слова) выдавало ошибку "не верние данные". Помагите
teres вне форума Ответить с цитированием
Старый 05.10.2011, 21:51   #2
_Troy
Я не простой
Пользователь
 
Аватар для _Troy
 
Регистрация: 29.09.2011
Сообщений: 77
По умолчанию

Событие onChange
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нем сведения
_Troy вне форума Ответить с цитированием
Старый 05.10.2011, 23:43   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

я как-то делал проще: в обработчике ошибок try введённый текст делил на 1.
Если пользователем было введено число, то оно делилось и всё было ясно. а вот если был другой текст, то, понятно, что он не делился на 1 и была ошибка, которую можно было обработать.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 06.10.2011, 00:10   #4
Стелс
Я с вами :-)
Форумчанин
 
Аватар для Стелс
 
Регистрация: 19.10.2008
Сообщений: 110
По умолчанию

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  If Key >= #32
    Then
    If Not (Key In ['0'..'9']) 
     Then begin
 Key := #0;
ShowMessage('Не на те кнопки жмеш !');
end;
end;
٩(๏̯͡๏)۶٩(๏̯͡๏)۶٩(๏̯͡๏)۶ моя любимая книга - Окна for чайников . Кодить начал ещё вчера . ......кто там кодит ? Да не кто не кодит это я куякнулся
Стелс вне форума Ответить с цитированием
Старый 06.10.2011, 00:14   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Стелс не все так просто, управляющие курсором кнопки тоже нужно обрабатывть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.10.2011, 00:17   #6
Стелс
Я с вами :-)
Форумчанин
 
Аватар для Стелс
 
Регистрация: 19.10.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Стелс не все так просто, управляющие курсором кнопки тоже нужно обрабатывть
Нафига ??? Кнопки курсора символов не вводят......
٩(๏̯͡๏)۶٩(๏̯͡๏)۶٩(๏̯͡๏)۶ моя любимая книга - Окна for чайников . Кодить начал ещё вчера . ......кто там кодит ? Да не кто не кодит это я куякнулся
Стелс вне форума Ответить с цитированием
Старый 06.10.2011, 00:21   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Но KeyPress все равно отрабатывает и вместо Backspace, Del, Left и т.д. что получим?

add

да не прав, спать пора. Но Backspace все равно нужно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 06.10.2011 в 00:26.
Аватар вне форума Ответить с цитированием
Старый 06.10.2011, 00:59   #8
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Код:
  try
    Value := StrToFloat;
  except
    on EConvertError do
    begin
      ShowMessage('Введены некорректные данные');
    end;
  end;
Желательно этот код не использовать в OnChange, лучше в обработчике OnClick кнопки.

Можно еще написать свою функцию наподобие IsNumeric, которая будет возвращать True если это число

Код:
function IsNumeric(const Value: string): Boolean;
var
  I: Integer;
begin
  // Значение по умолчанию
  Result := Length(Value) <> 0;

  for I := 1 to Length(Value) do
  begin
    if not (Value[I] in ['0'..'9', ',']) then
    begin
      Result := False;
      Exit;
    end;
  end;

end;
Использовать так:
Код:
if not IsNumeric(Edit1.Text) then ShowMessage('Введены некорректные данные');
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.

Последний раз редактировалось chertovich; 06.10.2011 в 01:08.
chertovich вне форума Ответить с цитированием
Старый 07.10.2011, 16:03   #9
visualserg
Новичок
Джуниор
 
Регистрация: 03.03.2011
Сообщений: 2
По умолчанию

На самом деле всё гораздо проще, в sysutils уже есть такая функция - это TryStrToInt

Код:
var
  i: integer;
begin
  if TryStrToInt(edit1.text, i) then
    ShowMessage('Число ' + inttostr(i))
  else
    ShowMessage('Не число');
visualserg вне форума Ответить с цитированием
Старый 25.10.2011, 10:12   #10
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

teres, уточните, какие знаки (цифры - понятно, может запятые/точки и т.д.).
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на правильность ввода в Edit Claster Помощь студентам 1 05.04.2011 13:27
Проверка на пустое ли поле Edit amator_roma Общие вопросы Delphi 4 16.11.2010 17:40
Проверка текста в Edit misher Общие вопросы Delphi 15 02.10.2010 13:17
проверка содержимого поля Edit KaimNotark Общие вопросы Delphi 6 16.02.2010 07:45
Проверка Edit, через val.. r-tem Компоненты Delphi 2 13.12.2007 20:19