Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить, что строка начинается с цифры? 
:(
    Опции темы
five
Дата 21.4.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 14.6.2002

Репутация: нет
Всего: нет



Не хотелось бы изобретать велосипед, но никак не могу сообразить как определить, что строка начинается с цифры?
Может кто чего подскажет?
Заранее спасибо.
PM   Вверх
z-END
Дата 21.4.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



наверно так:
Код
 if somestr[1] in ['0'..'9'] then  ...




--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Satana
Дата 21.4.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 564
Регистрация: 15.9.2004
Где: Ставрополь, СЗ ра йон

Репутация: 1
Всего: 5



объви множество, и делай так if str[1] in <твое множество> значит цифра


--------------------
 Работай на себя 
www.abalentsev.com - Сайт портфолио.
www.pokushau.ru - Рецепты со всего мира.
PM MAIL WWW ICQ   Вверх
Dimannn
Дата 21.4.2005, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



Можно и так
Код

try 
InttoStr(Copy(yourstring,1,1));
Cifra:=true;
except
Cifra:=false;
end;

Хотя Delphi серавно эррор покажет


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
Marriage
Дата 22.4.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2




#48 - 0
#57 - 9

Код

IF str[0] >=48 and str[0]<=57 then
   Цыфра!!!!



--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
~FoX~
Дата 22.4.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Val(s, i, code)
s - строка
i - кладем число
code - позиция символа который не является числом

Это как альтернатива, прелесть в том, что число может состоять из более чем одного символа.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Akella
Дата 23.4.2005, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Marriage, стока начинается не нулевого индекса, а с единицы

Код

IF str[1] >=48 and str[1]<=57 then
   Цыфра!!!!

PM MAIL   Вверх
Marriage
Дата 23.4.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



dsergey
Ну да, глюканул ...
Просто прогу на С сдавал недавно ...
Привык smile


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
mvdr
Дата 24.4.2005, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



Код

if (str[1]='0') or (str[1]='1')... or (str[1]='9') then ShowMessage('Строка начинаеться с цифры');



--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
vintch
Дата 25.4.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.4.2005

Репутация: нет
Всего: нет



Цитата
if (str[1]='0') or (str[1]='1')... or (str[1]='9') then ShowMessage('Строка начинаеться с цифры');

Тупее не видал smile

а вот правильный вариант уже был предложен:
Код

if str[1] in ['0'..'9'] then ...

PM MAIL   Вверх
Yanis
Дата 25.4.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Marriage @ 22.4.2005, 12:39)
IF str[0] >=48 and str[0]<=57 then
  Цыфра!!!!

Кто же Char с Integer сравнивает. Incompatible types, однако! Да к тому же слово "цыфра" написано с ошибкой.

To vintch
Цитата(vintch @ 25.4.2005, 14:36)
а вот правильный вариант уже был предложен:

А остальные варианты ошибочные? (кроме варианта от Marriage)


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 25.4.2005, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Может стоит поговорить о том, какой вариант будет работать быстрее и качественнее? а?
PM   Вверх
Yanis
Дата 25.4.2005, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



По моему вариант
Цитата(vintch @ 25.4.2005, 14:36)
if str[1] in ['0'..'9'] then ...

самый качественный =)

Хотя Delphi в этом случае компилит такой код:
Код

  mov eax, [ebp-$04]
  mov al, [eax]
  add al, $d0
  sub al, $0a
  jnb +$0a

но по моему можно обойтись и таким:
Код

  mov eax, [s]
  mov al, [eax]
  sub al, VK_9
  jbe @@1_char_is_num

Экономим целую инструкцию =)


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
~FoX~
Дата 26.4.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



А если в 16-ти ричной системе smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Marriage
Дата 26.4.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Цитата

IF str[0] >=48 and str[0]<=57 then
  Цыфра!!!!

Кто же Char с Integer сравнивает. Incompatible types, однако! Да к тому же слово "цыфра" написано с ошибкой.


Согласен, правильнее было бы так

Код

IF ( integer(str[1]) >= 48 ) and ( integer(str[1]) <= 57 ) then
 ShowMessage('number!!!');


А в С бы прокатило, насколько я понимаю ...


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1382 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.