![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть ли в Delphi что-то типа is_number? [D7, XP]
cvg © (2006-12-18 13:03:00)Сабж. Есть строка в два байта, в которой могут быть либо цифры, либо какие-то другие символы. Как из различить?
Германн (2006-12-19 16:07:00) [1]
> Sha © (19.12.06 15:48) [8]
>
> > Германн © (19.12.06 14:16) [7]
> > Не убедил. Все примеры содержат числа.
>
> Автору надо отличить цифры от других символов
>
> Думаю, знаки пробела, доллара и буква "x" все же относятся
> к другим символам, не так ли?
Теперь убедил :)
Anatoly Podgoretsky (2006-12-19 16:04:00) [2]> Sha (19.12.2006 15:48:08) [8]
Именно цифры, а не числа и набор их указан только 0..9 так что даже об минусе не надо беспокоиться, не говоря уж об научной нотации. Задача на проход в цикле, при этом по вопросу даже не требуется, что бы число было допустимым. Например 111111111111111111111111111111111111111 это нормальное число, но не допустимое для целых в Дельфи.
Sha (2006-12-19 15:48:00) [3]> Германн © (19.12.06 14:16) [7]
> Не убедил. Все примеры содержат числа.
Автору надо отличить цифрыот других символов
Думаю, знаки пробела, доллара и буква "x" все же относятся
к другим символам, не так ли?
Германн (2006-12-19 14:16:00) [4]
> Sha © (19.12.06 10:43) [5]
Не убедил. Все примеры содержат числа.
> Sha © (19.12.06 11:04) [6]
>
> > Германн © (19.12.06 01:16) [4]
>
> Сорри за чересчур вежливый пост
Пустяки. С кем не бывает, особливо по утрам :)
Sha (2006-12-19 11:04:00) [5]> Германн © (19.12.06 01:16) [4]
Сорри за чересчур вежливый пост - сработал рефлекс на навешивание ярлыков.
Возможно, срабатывание было ложным )
Sha (2006-12-19 10:43:00) [6]> Германн © (19.12.06 01:16) [4]
> Не советуешь, потому что Val чем-то плоха по твоему?
Я так сказал или ты сам за меня додумал? ))
Было сказано лишь то, что Val не подходит для проверки символьного
содержимого байтов в нашем случае.
Пример, приведенный ниже, показывает, как строка, не содержащая цифр,
обрабатывается данной функцией без ошибок.
Легко убедиться, что в нашем случае подобное использование Val приводит
к неверному заключению о содержимом строки.
Об этом часто забывают, что в данном случае, произошло и с тобой.
Ничего страшного.
procedure TForm1.Button5Click(Sender: TObject);
var
s: string;
i, c: integer;
begin
s:='$F';
Val(s,i,c);
ShowMessage(Format('%d %d',[i,c]));
end;
Если думаешь, что это единичная аномалия, то можешь дополнить
тестовый пример такими строками: '1', '0x1'.
Германн (2006-12-19 01:16:00) [7]
> Sha © (18.12.06 19:21) [3]
>
> TryStrToInt вроде через Val сделана, так что не советую
> использовать.
Не советуешь, потому что Val чем-то плоха по твоему?
Sha (2006-12-18 19:21:00) [8]TryStrToInt вроде через Val сделана, так что не советую использовать.
Непосредственная проверка - самое простое:
if (s[1] in ['0'..'9']) and (s[2] in ['0'..'9']) then ...
cvg (2006-12-18 13:08:00) [9]спасибо
clickmaker (2006-12-18 13:06:00) [10]TryStrToInt
IsCharAlpha() - win api