Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 23:44   #1
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию Проверка символов

Рус буквы можно вставить при помощи Ctrl + V , поэтому надо будит написать в обработчики батона код что типа если здесь (edit1) есть рус буква или провел то....

Как это правельно сделать
HTL вне форума Ответить с цитированием
Старый 31.03.2009, 00:14   #2
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

попробуй так:

Код:
procedure TForm1.Edit1Change(Sender: TObject);
var s, s1:string;
    i:integer;
begin
s:=Edit1.Text;
for i:=1 to Length(s) do
 if not (s[i] in ['А'..'Я']+['а'..'я']+[' '])
  then s1:=s1+s[i];
Edit1.Text:=s1;
end;

Извеняюся.. пропустил точку с запятой.. а вы, HTL, разобралися бы в коде, а не просто скопировали его
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"

Последний раз редактировалось Ntlegend; 31.03.2009 в 01:31.
Ntlegend вне форума Ответить с цитированием
Старый 31.03.2009, 00:25   #3
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

Код:
begin
s:=Edit1.Text;
for i:=1 to Length(s) do
 if not (s[i] in ['А'..'Я']+['а'..'я']+[' '])
  then s1:=s1+s[i]
Edit1.Text:=s1;
end;
в этой строчке ошибка (После "Edit1" но до "."):
[Error] Unit1.pas(95): Missing operator or semicolon

Последний раз редактировалось Stilet; 31.03.2009 в 09:17.
HTL вне форума Ответить с цитированием
Старый 31.03.2009, 04:32   #4
Peter20
 
Регистрация: 31.03.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от HTL Посмотреть сообщение
s[i] in ['А'..'Я']+['а'..'я']+[' '])
даже если текст программы и символы строки в одинаковой кодировке CP1251,
то буквы 'ё' и 'Ё' не попадут во множество
Peter20 вне форума Ответить с цитированием
Старый 31.03.2009, 09:54   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ntlegend
Ну начнем с того что автор всетки просил обработчик кнопки а не эдита.
Цитата:
в обработчики батона
Во-вторых не очень корректно вызывать изменение свойства text эдита обработчик которого сейчас выполняется - можно нарваться на перегруз стека.
В-третьих: Автору нужно простопроверить есть ли русские буквы, так что я бы на его месте сделал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;s:string;
begin s:=Edit1.Text;
i:=1; while (i<length(s))and(s[i] in ['а'..'я','А'..'Я']) do inc(i);
if (i<length(s)) then // Есть русские буквы
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2009, 12:36   #6
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну начнем с того что автор всетки просил обработчик кнопки а не эдита.

Во-вторых не очень корректно вызывать изменение свойства text эдита обработчик которого сейчас выполняется - можно нарваться на перегруз стека.
В-третьих: Автору нужно простопроверить есть ли русские буквы, так что я бы на его месте сделал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;s:string;
begin s:=Edit1.Text;
i:=1; while (i<length(s))and(s[i] in ['а'..'я','А'..'Я']) do inc(i);
if (i<length(s)) then // Есть русские буквы
end;
Не проходит, на все думает что рус буквы
HTL вне форума Ответить с цитированием
Старый 31.03.2009, 12:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а самому додумать условие хотя бы методом тыка не судьба?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;s:string;
begin s:=Edit1.Text;
i:=1;s:=s+'.';
 while (i<length(s))and not (s[i] in ['а'..'я','А'..'Я']) do
 inc(i);
if (i<length(s)) then caption:='есть' else caption:='Нет';
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка Манжосов Денис :) Общие вопросы Delphi 4 17.10.2008 16:27
Проверка правильности ввода символов LLIypLLIyH Помощь студентам 7 22.07.2008 19:30
Считывание символов AI01 Общие вопросы C/C++ 5 01.03.2008 17:30
Проверка ввода символов Raz0r Помощь студентам 2 06.11.2007 14:16