Проверка строки на число

Эта проблема долго не давала мне покоя. Я пользовался try…except, но в режиме отладки это приносило одни проблемы.
В очередной раз я столкнулся с необходимостью проверить является ли строка числом… И написал наконец-то скрипт, не использующий метод исключения.

Function ifInt(S:String):Boolean;
Var
 i,j: Integer;
 count: Integer;
 IntBool: Boolean;
 IntList: String;
begin
 IntBool := True;
 IntList := '0123456789'; // Таким образом мы можем проверить строку на обязательное наличие нужных нам символов. В данном примере это числа от 0 до 9
 for i := 1 to length(S) do
 begin
  count := 0;
  for j := 1 to length(IntList) do
  begin
   if S[i]<>IntList[j] then
   count := count + 1;
  end;
  if count = length(IntList) then
  begin
   IntBool := False;
   Break;
  end;
 end;
 Result := IntBool;
end;

3 комментария

  1. можно было немного покороче:

    begin
    Result := False;
    for i:=1 to Length(S) do
    if not (S[i] in [‘0’..’9′]) then exit;
    Result := True;
    end;

  2. Автор, Вы упорный человек, это похвально. Однако, иногда все же стоит читать справку. Для решения вышеупомянутой проблемы есть функция TryStrToInt.

    1. Stertot
      Иногда проще придумать свое решение, когда не можешь найти готовое. Честно — справку никогда не читал.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.