Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

Проверка Edit.Text   Найти похожие ветки 

 
Жук ©   (2004-12-15 11:47) [0]

Как в условном операторе проверить, что введённый текст (длиной не больше 3) удовлетворяет виду "111" или "А11", где "А" - буква, а "1" - цифра ? Второй и третий символы (если они есть) - обязательно цифры.


 
Cosinus ©   (2004-12-15 11:48) [1]

in?


 
Anatoly Podgoretsky ©   (2004-12-15 11:50) [2]

if txt="111" or txt="A11" then
Если же это вообще любые цифры и буквы, то используй последовательное сравнение символов с помощью проверки их вхождения во множество - это операция IN


 
Reindeer Moss Eater ©   (2004-12-15 11:51) [3]

Работа со строкой как с массивом символов.
Оператор if.
Операции сравнения больше/меньше.


 
Жук ©   (2004-12-15 11:59) [4]

Блин ! Точно. Торможу просто, залез в IsCharAlphaNumeric :-)
Всем спасибо.


 
Жук ©   (2004-12-15 14:55) [5]

if not ((Edit1.Text[1] in ["1".."9"]) or (Edit1.Text[1] in ["А".."Я"])) or
             not ((Edit1.Text[2] in ["1".."9"]) or (Edit1.Text[2]="")) or
             not ((Edit1.Text[3] in ["1".."9"]) or (Edit1.Text[3]=""))
            then begin

Более извращенческого кода я ещё не видел :-(
Оптимизировать можно ?


 
Anatoly Podgoretsky ©   (2004-12-15 15:03) [6]

if (Edit1.Text[1] in ["1".."9", "А".."Я"]) and
  (Edit1.Text[2] in ["1".."9"]) and
  (Edit1.Text[3] in ["1".."9"])
then


 
Думкин ©   (2004-12-15 15:05) [7]

а если length(Edit1.Text)=1 ?


 
Александр Иванов ©   (2004-12-15 15:07) [8]


{$B+}
Str:=Edit1.Text;
if (not Str[1] in  ["1".."9","А".."Я"]) or (Length(Str)<=1) or (not Str[2] in ["1".."9"]) or (Length(Str)<=2) or (not Str[3] in ["1".."9"]) then

Мог ошибиться, но по-моему принцип тот. Т.е. вычисление логического выражения с ключем, по короткой схеме, чтобы не было выхода за границы массива(строки).


 
Александр Иванов ©   (2004-12-15 15:09) [9]

Забыл проверку на пустую строку.


 
Anatoly Podgoretsky ©   (2004-12-15 15:15) [10]

Думкин ©   (15.12.04 15:05) [7]
Оставлено в качестве домашнего задания. И к тому же тебя уже поправили, а если length(Edit1.Text)=0, а если больше 3 и так далее.

Допустимые значения
1. Длина строки ровно 3 символа
2. Первый символ из одного множества
3. второй и третий их другого множества

других условий не указано, вот все три условия и подлежат проверке и именно в таком порядке.


 
Думкин ©   (2004-12-15 15:18) [11]

> [10] Anatoly Podgoretsky ©   (15.12.04 15:15)

Верно. Только не поправили. :)
Я частность указал, которая не работает. Ведь по условию длина <= 3.


 
Жук ©   (2004-12-15 15:24) [12]

Думкин - прав, АП - не прав :-)
Длина действительно <=3, и код АП будет некорректно работать при длине "не 3".


 
Александр Иванов ©   (2004-12-15 15:26) [13]

{$B-}
Str:=Edit1.Text;
if (Length(Str)<=0) or (not Str[1] in  ["1".."9","А".."Я"]) or (Length(Str)<=1) or (not Str[2] in ["1".."9"]) or (Length(Str)<=2) or (not Str[3] in ["1".."9"]) then

В ключе оказывается тоже ошибся. :).


 
Жук ©   (2004-12-15 15:37) [14]

Александр Иванов ©   (15.12.04 15:26) [13]
Остроумно. Только можно без дополнительной переменной обойтись.


 
Александр Иванов ©   (2004-12-15 15:48) [15]

Можно.



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

Текущий архив: 2005.01.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.058 c
1-1103207930
redlord
2004-12-16 17:38
2005.01.02
завершение потока приводит к зависанию


1-1103243019
paule
2004-12-17 03:23
2005.01.02
Наложение в Memo


3-1102068577
lightix
2004-12-03 13:09
2005.01.02
Tquery,кэшированные данные и DBF таблицы


1-1103410754
tazik
2004-12-19 01:59
2005.01.02
Введение своего языка в свою программу


1-1103186444
TUser
2004-12-16 11:40
2005.01.02
finalization