Как узнать, буква или цифра?

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет! Подскажите, есть Едит, в него попадает либо цифра либо буква, от этого мне нада менять путь по которому пойдет программа, как узнать что попало в Едит?
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

Код: Выделить всё

If (Edit1.Text<'0')and(Edit1.Text>'9') then 
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
vunder
Сообщения: 74
Зарегистрирован: 10 май 2006, 12:19
Откуда: Санкт-Петербург
Контактная информация:

Нужно обрабатывать событие OnKeyPress

Код: Выделить всё

procedure TAddEditListColumnForm.eWidthKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key in ['0'..'9'] then
  //цифра
  else
  //другое
end;
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

OnKeyPress cкорее всего не пойдет, т.к. значения присваиваются в процессе программы.

Есть проблема

Код: Выделить всё

If (Edit1.Text<'0')and(Edit1.Text>'9') then  
Фишка работает, только если заданна цифра или буква отдельно, а у меня попался случай что появилось значение - 2Т, в этом случае прога сказала что цифра, другой случай Т2 - это сказала что буква.
Мне нужно все таки чтоб даже 2Т была буква, а то появляется косяк в программе :)
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Код: Выделить всё

function isNumber(S: String): boolean;
var
  i: Integer;
begin
  if Length(S) = 0 then Result := False
  else begin
    Result := True;
    for i := 1 to Length(S) do
      Result := Result and (S[i] in ['0'..'9']);
  end;
end;
С уважением, Lost Angel...
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Или проще ;)

Код: Выделить всё

function isNumber(S: String): Boolean;
begin
  Result := True;
  try StrToInt(S);
  except Result := False;
  end;
end;
С уважением, Lost Angel...
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

ВО-О-О-О-О! Вот это тема! Самая что не на есть функция проверки, коротко и просто :)
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

LAngel писал(а):Или проще ]function isNumber(S: String): Boolean;
begin
Result := True;
try StrToInt(S);
except Result := False;
end;
end;[/code]
я бы так сделал:

Код: Выделить всё

function isNumber(S: String): Boolean;
var
  v,c:integer;
begin
  val(s,v,c);
  Result := c=0;
end;
работает быстрее и лишний раз исключение не создаем
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Ответить