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

Вниз

Проверить значение первого символа   Найти похожие ветки 

 
HumanToString   (2006-11-05 10:19) [0]

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

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


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


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


 
HumanToString   (2006-11-05 10:20) [1]

Т.е. во втором случае = 0,  не <> 0.


 
HumanToString   (2006-11-05 10:21) [2]

Нет, всё правильно, <>. Что-то  совсем с головой плохо...


 
Virgo_Style ©   (2006-11-05 10:39) [3]

по (2) :
- 0 не является цифрой? Я не помню...
- пропущено Edit.Text[1]

по обоим - проверка Edit1.Text>"" .

imho, следует использовать (1).


 
HumanToString   (2006-11-05 11:02) [4]


> - 0 не является цифрой? Я не помню...


Спасибо. Что-то я не сообразил про 0.


 
HumanToString   (2006-11-05 11:45) [5]

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


 
Anatoly Podgoretsky ©   (2006-11-05 11:50) [6]

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


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


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

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


 
palva ©   (2006-11-05 14:02) [8]

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


 
palva ©   (2006-11-05 14:03) [9]

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


 
Leonid Troyanovsky ©   (2006-11-05 14:09) [10]


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

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

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

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

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


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

--
Regards, LVT.


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

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

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

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


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

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

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


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

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


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

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


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

Length(Edit1.Text) <> 0

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


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


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

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


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

--
Regards, LVT.


 
Ketmar ©   (2006-11-05 17:56) [16]

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


 
Anatoly Podgoretsky ©   (2006-11-05 18:02) [17]

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

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


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

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


 
Ketmar ©   (2006-11-05 18:05) [19]

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


 
Loginov Dmitry ©   (2006-11-05 18:08) [20]

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


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


 
Anatoly Podgoretsky ©   (2006-11-05 18:08) [21]

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

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


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

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

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

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


 
Loginov Dmitry ©   (2006-11-05 18:13) [23]

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


А зря...


 
Ketmar ©   (2006-11-05 18:14) [24]

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

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


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


 
Anatoly Podgoretsky ©   (2006-11-05 20:10) [25]

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

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



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

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

Наверх





Память: 0.5 MB
Время: 0.097 c
2-1162226881
Evo
2006-10-30 19:48
2006.11.19
как убрать ошибку


1-1159865750
Sham
2006-10-03 12:55
2006.11.19
Проблема с типами данных


2-1162480191
Riply
2006-11-02 18:09
2006.11.19
Два комонента, использующие OpenGL


6-1148946937
nikitian
2006-05-30 03:55
2006.11.19
Проблема с кодировкой в indySMTP


2-1162690779
Okey
2006-11-05 04:39
2006.11.19
Поиск как в словаре





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский