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

Поиск:

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


Эксперт
****


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

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



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

Так это и есть в шестнадцатиричной. Просто забыл весь код привести. Сори...
Код

const
  VK_0 = $30;
  { ... }
  VK_9 = $39;
var
  s: String;
begin
  S := Edit1.Text;

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

  @@1_char_is_num:
      mov eax, [s]
      call ShowMessage
  @@exit:
  end;

Код некорректно работает, если первый символ $20 (пробел) или символы с кодом меньше чем VK_0 smile

Цитата(Marriage @ 26.4.2005, 11:51)
Согласен, правильнее было бы так
IF ( integer(str[1]) >= 48 ) and ( integer(str[1]) <= 57 ) then
ShowMessage('number!!!');

По моему лучше так:
Код

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

Так, вроде, на 2 такта быстрее smile


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


Опытный
**


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

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



Yanis
Цитата
Так, вроде, на 2 такта быстрее

А почему ???


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


Эксперт
****


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

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



Код

  if (Integer(s[1]) >= 48) and (Integer(s[1]) <= 57) then
    ShowMessage('number!!!');

Этот код Delphi интерпретирует в такой:
Код

...
mov eax, [ebp-$04]
movzx eax, [eax] ; !!!
cmp eax, $30
...

А код
Код

  if (Ord(s[1]) >= 48) and (Ord(s[1]) <= 57) then
    ShowMessage('number!!!');

в
Код

...
mov eax, [ebp-$04]
mov eax, [eax] ; !!!
cmp eax, $30
...

Вот собственно и различие (надеюсь не наврал =))


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


Опытный
**


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

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



movzx - эт что за зверь такой ????


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


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


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

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



Цитата(Yanis @ 26.4.2005, 21:32)
Так это и есть в шестнадцатиричной. Просто забыл весь код привести. Сори...

Я имел ввиду не код, а число, допустим строка начинается с FFsdfsdf, F в данном случае число. smile



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


Эксперт
****


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

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



Цитата
Я имел ввиду не код, а число, допустим строка начинается с FFsdfsdf, F в данном случае число.

Если бы сложилось так, что у нормальных людей было бы на обоих руках 32 пальцев, а не 20, то и шестнадцатиричные числа были бы учтены и вынесены на Num pad и всё таке прочее. К стати, что было бы с шестнадцатирчиными редакторами? ;)

P.S. Если в шестнадцатиричной, то не один приведённый выше код не работает smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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