![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверить значение первого символа
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]Что значит лучше, результат то одинаковый, не хуже и не лучше