Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверить значение первого символа


Страницы:   1 2

HumanToString ©   (2006-11-05 10:19:00) 

Из элемента TEdit необходимо проверить первый символ на принадлежность к цифре. Т.е. проверить является ли первый символ цифрой. Как это лучше сделать?

1.
 if (Edit1.Text[1] in ['0'..'9']) then
   ShowMessage('dd');


2.
 if (StrToIntDef(Edit1.Text, 0) <> 0) then
   ShowMessage('dd2');


Или и то и то, совсем не то?


Anatoly Podgoretsky   (2006-11-05 20:10:00) [1]

> Percent  (05.11.2006 18:09:22)  [22]

Неправильной стороной ты ешь бутерброд дядя Федор


Ketmar   (2006-11-05 18:14:00) [2]

"а конi де, де конi?!" (ц)
проверил:

b := (s = ''):
cmp dword ptr [s],0
setz bl
--------
b := (Length(s) = 0);
mov eax,[s]
call @LStrLen


увы и ах. сравнение с '' шустрее. и оно-таки nil. %-)


Loginov Dmitry   (2006-11-05 18:13:00) [3]

Percent   (05.11.06 18:09) [22]
Я так себе подозреваю, что '' - не nil


А зря...


Percent   (2006-11-05 18:09:00) [4]

Я так себе подозреваю, что '' - не nil. Я так думаю, что '' - это строковая константа. И сравнение, думаю, идет с помощью строковых команд процессора (или как там оно реализовано в Delphi?).
А вот Length() - это просто извлечение длины строки (которая хранится во вполне определенном месте) и целочисленное сравнение с константой.

Поэтому, подозреваю, Length() - быстрее.

Я так себе думаю...


Anatoly Podgoretsky   (2006-11-05 18:08:00) [5]

> Ketmar  (05.11.2006 18:05:19)  [19]

Результат одинаковый и это не тот случай когда нужно беспокоиться об
оптимизации


Loginov Dmitry   (2006-11-05 18:08:00) [6]

Ketmar ©   (05.11.06 18:05) [19]
кстати, хоть и медленей, а я всё равно Length() использую.


Из-за этого все проги так тормозят, так тормозят...
:)


Ketmar   (2006-11-05 18:05:00) [7]

кстати, хоть и медленей, а я всё равно Length() использую. дурное наследие TP/BP...


Ketmar   (2006-11-05 18:04:00) [8]

>[17] Anatoly Podgoretsky(c) 5-Nov-2006, 18:02
>Смотреть надо код в окне CPU
так это ж среду запускать. лениво. %-)


Anatoly Podgoretsky   (2006-11-05 18:02:00) [9]

> Ketmar  (05.11.2006 17:56:16)  [16]

Конечно медленнее, второй вариант кроме сравнения с nil еще и извлекает этот
член структуры и возвращает его. Смотреть надо код в окне CPU


Ketmar   (2006-11-05 17:56:00) [10]

>[14] Percent 5-Nov-2006, 17:49
>Этот быстрее.
факт ли? по-моему, <> ''-- это просто сравнение с nil. так что фиг там разницы. может, даже Length() медленней. %-)


Leonid Troyanovsky   (2006-11-05 17:53:00) [11]


> Loginov Dmitry ©   (05.11.06 17:32) [13]

> Лучше 1. Букв меньше.
> Если в Edit букв много, используй 2.


Дык, ручки уж устали, в Edit заносить.
Можно 1?

--
Regards, LVT.


Percent   (2006-11-05 17:49:00) [12]

Length(Edit1.Text) <> 0

Этот быстрее.


Loginov Dmitry   (2006-11-05 17:32:00) [13]

HumanToString   (05.11.06 11:45) [5]
Тогда вопрос ещё один: а как лучше проверять наличие текста:
1.
if Edit.Text <> ''
2.
if Length(Edit1.Text) <> 0


Лучше 1. Букв меньше.

Если в Edit букв много, используй 2.


Anatoly Podgoretsky   (2006-11-05 14:43:00) [14]

> palva  (05.11.2006 14:03:09)  [9]

Почему неудачно, как раз по делу, критериев четких и установленых
ограничений у него не было, вот и помер бедняжка. А было бы ограничение -
если слева и справа равны, то бери слева, то и жил бы до естественной
смерти.


Anatoly Podgoretsky   (2006-11-05 14:41:00) [15]

> HumanToString  (05.11.2006 13:23:07)  [7]

> ведь всегда есть вариант который лучше

Это бессмысленный набор букв, критерии давай.


Leonid Troyanovsky   (2006-11-05 14:09:00) [16]


> palva ©   (05.11.06 14:02) [8]

> Так думал ныне покойный буриданов осел.

И ныне здравствует, в отличии от его создателя,
Царствие ему небесное.

> palva ©   (05.11.06 14:03) [9]

> Я, конечно, не хотел никого обидеть.


Буридана, что ли?
Дык, он примерно для этого и ввел оное понятие.

--
Regards, LVT.


palva   (2006-11-05 14:03:00) [17]

Я, конечно, не хотел никого обидеть. Просто неудачно пошутил.


palva   (2006-11-05 14:02:00) [18]

> Ну не знаю, ведь всегда есть вариант который лучше.
Так думал ныне покойный буриданов осел.


HumanToString   (2006-11-05 13:23:00) [19]


> Что значит лучше

Ну не знаю, ведь всегда есть вариант который лучше.


Anatoly Podgoretsky   (2006-11-05 11:50:00) [20]

Что значит лучше, результат то одинаковый, не хуже и не лучше


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо