Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

Есть ли в Delphi что-то типа is_number?   Найти похожие ветки 

 
cvg   (2006-12-18 13:03) [0]

Сабж. Есть строка в два байта, в которой могут быть либо цифры, либо какие-то другие символы. Как из различить?


 
clickmaker ©   (2006-12-18 13:06) [1]

TryStrToInt
IsCharAlpha() - win api


 
cvg   (2006-12-18 13:08) [2]

спасибо


 
Sha ©   (2006-12-18 19:21) [3]

TryStrToInt вроде через Val сделана, так что не советую использовать.
Непосредственная проверка - самое простое:

if (s[1] in ["0".."9"]) and (s[2] in ["0".."9"]) then ...


 
Германн ©   (2006-12-19 01:16) [4]


> Sha ©   (18.12.06 19:21) [3]
>
> TryStrToInt вроде через Val сделана, так что не советую
> использовать.

Не советуешь, потому что Val чем-то плоха по твоему?


 
Sha ©   (2006-12-19 10:43) [5]

> Германн ©   (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".


 
Sha ©   (2006-12-19 11:04) [6]

> Германн ©   (19.12.06 01:16) [4]

Сорри за чересчур вежливый пост - сработал рефлекс на навешивание ярлыков.
Возможно, срабатывание было ложным )


 
Германн ©   (2006-12-19 14:16) [7]


> Sha ©   (19.12.06 10:43) [5]

Не убедил. Все примеры содержат числа.


> Sha ©   (19.12.06 11:04) [6]
>
> > Германн ©   (19.12.06 01:16) [4]
>
> Сорри за чересчур вежливый пост

Пустяки. С кем не бывает, особливо по утрам :)


 
Sha ©   (2006-12-19 15:48) [8]

> Германн ©   (19.12.06 14:16) [7]
> Не убедил. Все примеры содержат числа.


Автору надо отличить цифры от других символов

Думаю, знаки пробела, доллара и буква "x" все же относятся
к другим символам, не так ли?


 
Anatoly Podgoretsky ©   (2006-12-19 16:04) [9]

> Sha  (19.12.2006 15:48:08)  [8]

Именно цифры, а не числа и набор их указан только 0..9 так что даже об минусе не надо беспокоиться, не говоря уж об научной нотации. Задача на проход в цикле, при этом по вопросу даже не требуется, что бы число было допустимым. Например 111111111111111111111111111111111111111 это нормальное число, но не допустимое для целых в Дельфи.


 
Германн ©   (2006-12-19 16:07) [10]


> Sha ©   (19.12.06 15:48) [8]
>
> > Германн ©   (19.12.06 14:16) [7]
> > Не убедил. Все примеры содержат числа.
>
> Автору надо отличить цифры от других символов
>
> Думаю, знаки пробела, доллара и буква "x" все же относятся
> к другим символам, не так ли?

Теперь убедил :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
2-1166510525
Steep
2006-12-19 09:42
2007.01.07
ADOQuery + MS SQL Server


3-1161578262
Rashit
2006-10-23 08:37
2007.01.07
Delphi + MySQL


15-1166539412
ocean
2006-12-19 17:43
2007.01.07
Отменить установку IE7


15-1166414508
pkm
2006-12-18 07:01
2007.01.07
Запись звука.


15-1166446686
ArtemESC
2006-12-18 15:58
2007.01.07
UNIX, C





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский