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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2014, 18:13   #1
Zurs
Пользователь
 
Регистрация: 15.12.2013
Сообщений: 28
По умолчанию Работа с символами

Здравствуйте! Прошу помочь в следующем. Delphi 7, есть TEdit, куда нужно вбить цифру, как сделать проверку на ввод НЕ цифр?
Zurs вне форума Ответить с цитированием
Старый 10.12.2014, 08:56   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
try
  strtoint(edit1.text);
except
  ShowMessage('Найдены НЕ цифры!!!');
end;
или через старый добрый OnKeyUp
ZuBy вне форума Ответить с цитированием
Старый 10.12.2014, 09:27   #3
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Zurs Посмотреть сообщение
Здравствуйте! Прошу помочь в следующем. Delphi 7, есть TEdit, куда нужно вбить цифру, как сделать проверку на ввод НЕ цифр?
Проверить или запретить ввод НЕ цифр?
Разрешены цифры, минус и бэкспэйс:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     case Key of
       #8, #45, #48..#57:
       if (Key = #45) and (Length(Edit1.Text) >= 1) then Key:= #0;
     else  Key:= #0;
end;
end;
Или:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     case Key of
       #8, #48..#57:;
       #45: if Length(Edit1.Text) >= 1 then Key:= #0;
     else  Key:= #0;
end;
end;

Последний раз редактировалось Iron Monk; 10.12.2014 в 09:31.
Iron Monk вне форума Ответить с цитированием
Старый 10.12.2014, 12:59   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Последний вариант работает некорректно, потому как можно вставить символы из буфера обмена. Можно сделать так:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  v,c: integer;
begin
  with TEdit(Sender) do begin
    val(Text, v, c);
    if c>0 then begin
      Text:=copy(Text,1,c-1);
      SelStart:=c-1;
    end;
  end;
end;
Arigato вне форума Ответить с цитированием
Старый 10.12.2014, 13:33   #5
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Последний вариант работает некорректно, потому как можно вставить символы из буфера обмена. Можно сделать так:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  v,c: integer;
begin
  with TEdit(Sender) do begin
    val(Text, v, c);
    if c>0 then begin
      Text:=copy(Text,1,c-1);
      SelStart:=c-1;
    end;
  end;
end;
Тоже косяк, если в программе нужно переназначить DecimalSeparator)))
Iron Monk вне форума Ответить с цитированием
Старый 10.12.2014, 16:45   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Так там только целые числа.

Модифицировал свой вариант, так будет лучше:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  v,c: integer;
begin
  with TEdit(Sender) do begin
    val(Text, v, c);
    if c>0 then begin
      if Text='' then
        Tag:=0;
      Text:=IntToStr(Tag);
      SelStart:=c-1;
    end else Tag:=v;
  end;
end;

Последний раз редактировалось Arigato; 10.12.2014 в 16:52.
Arigato вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с символами. Паскаль Sheva95 Помощь студентам 2 17.01.2013 18:04
Работа с символами(Язык C) ryadnovka Помощь студентам 2 19.11.2012 22:19
Работа со строками и символами. AlexStudent Общие вопросы C/C++ 6 30.05.2011 16:17
Работа с символами.Паскаль Андрюха74 Помощь студентам 2 10.06.2010 16:08
Работа с русскими символами... Sota Помощь студентам 5 31.05.2008 18:44