Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
sly444
5 / 5 / 3
Регистрация: 29.12.2010
Сообщений: 146
1

Количество букв в поле edit (именно букв)

03.01.2014, 13:55. Просмотров 1491. Ответов 10
Метки нет (Все метки)

Всем привет!

Скажите, как проверить поле edit на буквы? Именно на буквы. То есть, если в поле edit одни пробелы, или символы какие-нибудь, или меньше 2 букв - чтобы программа не запускалась.

Тобишь сделать так:
if (в edit1.Text лежит слово, состоящее из 2 букв или более) then
программа работает
else
не работает;

При чем слово должно состоять именно из двух букв вида: aa . А не, а а или а!а . Как такое реализовать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2014, 13:55
Ответы с готовыми решениями:

Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте
Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте.

Автомобильные номера состоят из 1,2, или 3 букв и 4 цифр. используется 30 букв, найти число таких букв
Автомобильные номера состоят из 1,2, или 3 букв и 4 цифр. используется 30 букв, найти число таких...

Извлечение слов и их распределение на категории: из русс. букв, из англ. букв, из русс. и англ. букв, слова схожие по начертанию букв с русс и англ.
В тексте содержатся русские и англ слова. разделить все слова на 3 списка: русские слова, англ...

Edit между букв
Вообщем может я не по теме и в делфи этого нельзя,но спрошу. Как можно в слове ,в определенном...

Массив из букв ['A' . 'Z'] и Edit
В функции, у меня, CU := ; Вопрос: Ка правильно подключить Edit место что бы можно было...

10
GetHelp
61 / 62 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
03.01.2014, 15:48 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
Var IsLetter: Boolean;
    i: Integer;
begin
for i:= 1 to Length(Edit.Text) do
if not (Edit.Text[i] in ['A'..'Z', 'a'..'z'])
then 
      begin
      IsLetter := False;
      break;
      end;
if IsLetter then
if Length(Edit.Text) then ... //че то сделали
end;
1
sly444
5 / 5 / 3
Регистрация: 29.12.2010
Сообщений: 146
03.01.2014, 23:59  [ТС] 3
GetHelp, К сожалению, не работает вариант. В любом случае, чтобы не было в Edit все равно он переменной isLetter присваивает false. Попробовал в части:
Delphi
1
2
3
4
5
then 
      begin
      IsLetter := False;
      break;
      end;
Присвоить true. И он начал всегда присваивать true. Почему-то игнорится условие:
Delphi
1
if not (Edit.Text[i] in ['A'..'Z', 'a'..'z'])
Оно всегда равно true.

В edit вставлял просто пробелы, слова (как на русском, так и латиницей), цифры, символы. Ничего не работает..
0
Cyborg Drone
Модератор
5907 / 3500 / 2567
Регистрация: 17.08.2012
Сообщений: 11,225
04.01.2014, 02:25 4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Var IsLetter: Boolean;
    i: Integer;
    s: string;
begin
  IsLetter := true;
  s := Edit.Text;
  for i := 1 to Length(s) do 
    if not(s[i] in ['A'..'Z', 'a'..'z'])
      then begin
        IsLetter := False;
        break
      end;
  if IsLetter and (Length(s) > 2)
    then //всё нормально
    else //не всё нормально
end;
1
04.01.2014, 02:25
NIKOLAYY
826 / 724 / 339
Регистрация: 22.09.2012
Сообщений: 5,000
04.01.2014, 07:29 5
Ну вот так еще, по таблице на любые символы поставить:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  i: integer; //для цикла
  str: string; //строка
begin
  Str := Edit1.Text;
  for i := 1 to Length(Str) do
    case ord(Str[i]) of
      48..57: ShowMessage(str[i] + ' - цифра');
      192..255: ShowMessage(str[i] + ' - Русская буква');
      65..90, 97..122: ShowMessage(str[i] + ' - Английская буква');
      //65-90 диапазон заглавных англ букв 97-122 мелких
    end;
end;
Добавлено через 7 минут
виссс

Добавлено через 15 секунд
виссс
1
sly444
5 / 5 / 3
Регистрация: 29.12.2010
Сообщений: 146
04.01.2014, 08:02  [ТС] 6
GetHelp, Ваш код идеально работает, просто перед циклом надо было написать, что isLetter по-умолчанию равен true. Спасибо за помощь!

Cyborg Drone, Вас также благодарю! Именно благодаря Вашему коду на меня и снизошло озарение

NIKOLAYY, Интересная вещь, тоже надо будет опробовать. А вот Вы написали только один диапазон для русских букв - это для маленьких или больших?
0
Puporev
Модератор
57192 / 43651 / 30165
Регистрация: 18.05.2008
Сообщений: 104,065
04.01.2014, 08:28 7
192..255 это коды всех русских букв кроме Ё, ё
1
NIKOLAYY
826 / 724 / 339
Регистрация: 22.09.2012
Сообщений: 5,000
04.01.2014, 08:31 8
И для маленьких и для больших, они все вошли в тот диапазон.
Вот таблица: http://ipg.h1.ru/lessons/delphi/les04_pr01.html
1
sly444
5 / 5 / 3
Регистрация: 29.12.2010
Сообщений: 146
04.01.2014, 21:53  [ТС] 9
Всем спасибо за помощь!
0
Cyborg Drone
Модератор
5907 / 3500 / 2567
Регистрация: 17.08.2012
Сообщений: 11,225
05.01.2014, 21:20 10
sly444, обращаю Ваше внимание на тот факт, что в среде Delphi используются объекты, и Edit.Text это - в первую очередь - свойство конкретного экземпляра объекта TEdit типа string, а не просто переменная типа string. Поэтому, для избежания плохо отлавливаемых ошибок, рекомендую копировать содержимое Edit.Text в промежуточную переменную, кроме случаев непосредственного чтения / записи: нет никакой гарантиии, что за время работы Вашего кода значение свойства Edit.Text не изменится. Если обращаться к каждому символу по индексу: нет гарантии, что длина поля Text не изменится. Всего доброго.
1
sly444
5 / 5 / 3
Регистрация: 29.12.2010
Сообщений: 146
06.01.2014, 23:15  [ТС] 11
Cyborg Drone, спасибо за предупреждение. Как раз думал, что лучше все записывать в переменные, так надежнее.
0
06.01.2014, 23:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 23:15

Соотношение букв к цифрам. Edit
Всем привет, что-то я не догоняю, как можно получить исходя из определенного текста нужные мне...

Регистр букв в поиске Edit
Что сделать, чтоб не учитывался регистр букв при вводе данных? procedure...

Как запретить ввод в Edit букв?
procedure TForm5.Button1Click(Sender: TObject); var a,b,i:integer; s:real; begin...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru