Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 469

/ вопрос открыт /

Здравствуйте, эксперты!
У меня такая проблема-нужно чтобы в Edit можно было ввести только латиницу(ну и цифры и символы) главное чтобы без кириллицы.
Как это сделать?

Aristotel Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Aristotel (статус: Посетитель)
Вопрос отправлен: 1 июля 2011, 11:54
Состояние вопроса: открыт, ответов: 3.

Ответ #1. Отвечает эксперт: Эхо Унитазного Бачка

Здравствуйте, Aristotel!
На память есть обработчик OnKeyPress - туда воткни проверку на вхождение <key> в множество ['а' .. 'я', 'А', 'Я'].

Ответ отправил: Эхо Унитазного Бачка (статус: 1-ый класс)
Время отправки: 1 июля 2011, 12:29
Оценка за ответ: -1

Комментарий к оценке: Ну и как проверить?

Ответ #2. Отвечает эксперт: bugmenot

Боян, обсуждалось бесчисленное кол-во раз.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
  Allowed = ['0'..'9', 'A'..'Z', 'a'..'z'];
begin
  if not CharInSet(Key, Allowed) then
    Key := #0;
end;

Ответ отправил: bugmenot (статус: 3-ий класс)
Время отправки: 1 июля 2011, 12:35
Оценка за ответ: 3

Комментарий к оценке: А в какое место программы надо вставлять это?

Ответ #3. Отвечает эксперт: min@y™

Цитата (Aristotel):

Я написал кусок кода

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); 
begin 
  if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё'] 
    then Key := #0; 
end;

но у меня всё равно вводятся русские буквы-уже не знаю что делать. Подскажите плиз


Да надоел ты уже! Ну сколько можно? Написал я тебе пример, потратил 3 минуты. Прицепляю к ответу.

З.Ы. Мой телепатор говорит, что ты не смог присвоить обработчик событию OnKeyPress.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 6 июля 2011, 11:05
Оценка за ответ: 4

Комментарий к оценке: У меня почему то не пашет хотя сделал как у тебя

Мини-форум вопроса

Всего сообщений: 39; последнее сообщение — 7 июля 2011, 10:51; участников в обсуждении: 6.

Страницы: [« Предыдущая] [1] [2]

Aristotel

Aristotel (статус: Посетитель), 5 июля 2011, 11:29 [#21]:

Я вставил кусок кода который мне написал bugmenot но у меня пишет что нашол какие-то ошибки
Aristotel

Aristotel (статус: Посетитель), 5 июля 2011, 11:32 [#22]:

И что означает Expected '+=' but ';' found ?
Aristotel

Aristotel (статус: Посетитель), 5 июля 2011, 11:33 [#23]:

Пардон ошибся там Expected '='
min@y™

min@y™ (статус: Доктор наук), 5 июля 2011, 11:37 [#24]:

Да напиши ты вот так:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not CharInSet(Key, ['0'..'9', 'A'..'Z', 'a'..'z']) 
    then Key := #0;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 5 июля 2011, 11:52 [#25]:

-1 - это очень хреновая оценка! А ответ-то правильный...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aristotel

Aristotel (статус: Посетитель), 5 июля 2011, 11:53 [#26]:

Щас попоробую
Вадим К

Вадим К (статус: Академик), 5 июля 2011, 11:53 [#27]:

вопрошающий не смог его применить.
Галочка "подтверждения прочтения" - вселенское зло.
Aristotel

Aristotel (статус: Посетитель), 5 июля 2011, 11:55 [#28]:

Блин-нашёл ошибки: Undeclared identifier: 'CharInSet'
Unsatisfied forward or external declaration: 'TForm1.FormCreate'
min@y™

min@y™ (статус: Доктор наук), 5 июля 2011, 11:59 [#29]:

Цитата (Aristotel):

Undeclared identifier: 'CharInSet'

Вселенская катастрофа! Ну, переделай вот так:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё']
    then Key := #0;
end;

Цитата (Aristotel):

Unsatisfied forward or external declaration: 'TForm1.FormCreate'

Изменил/удалил обработчик OnCreate формы? Исправляй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aristotel

Aristotel (статус: Посетитель), 5 июля 2011, 12:43 [#30]:

Чего то у меня всё равно в Edit вводятся русские буквы(
Aristotel

Aristotel (статус: Посетитель), 5 июля 2011, 12:58 [#31]:

А в Edit1Change нужно менять что-то?
min@y™

min@y™ (статус: Доктор наук), 5 июля 2011, 13:13 [#32]:

Цитата (Aristotel):

А в Edit1Change нужно менять что-то?

Расскажи-ка, лучше, зачем тебе понадобилось такое ограничение?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
bugmenot

bugmenot (статус: 3-ий класс), 5 июля 2011, 18:46 [#33]:

Цитата (Aristotel):

Оценка за ответ: 3

Надо бы добавить, начальник; вопросы очень толстые.
виконання програми розпочинається з того самого мiсця, де призупинилося.

Gooddy

Gooddy (статус: 3-ий класс), 5 июля 2011, 19:22 [#34]:

Мда.
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 6 июля 2011, 10:53 [#35]:

Я написал кусок кода

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё']
then Key := #0;
end;

но у меня всё равно вводятся русские буквы-уже не знаю что делать.
Подскажите плиз
Aristotel

Aristotel (статус: Посетитель), 7 июля 2011, 10:38 [#36]:

Смотрите-написал прогу но в LabeledEdit1 всё равно вводятся русские буквы-не пойму в чём дело-должно всё работать а не хочет
Вот прога:
unit lab1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan;

type
TForm1 = class(TForm)
Button1: TButton;
LabeledEdit1: TLabeledEdit;
XPManifest1: TXPManifest;
procedure LabeledEdit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё']
then Key := #0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str:STRING;
k:integer;
begin
str:=LabeledEdit1.Text;
k:=Length(str);
str[k+1]:=#0;
LabeledEdit1.Text:=str;
LabeledEdit1.Text:=StringReplace(LabeledEdit1.Text, 'ed ', 'ing ', [rfReplaceAll, rfIgnoreCase]);
if (str[k]='d') and (str[k-1]='e') then
begin
LabeledEdit1.Text:=StringReplace(LabeledEdit1.Text, 'ed', 'ing', [rfReplaceAll, rfIgnoreCase]);
end;
end;
end.
Aristotel

Aristotel (статус: Посетитель), 7 июля 2011, 10:48 [#37]:

НАКОНЕЦ-ТО ЭТО СВЕРШИЛОСЬ-ВСЁ ЗАРАБОТАЛО-УРА! УРА! УРА!!!
ТЕМА ЗАКРЫТА
Вадим К

Вадим К (статус: Академик), 7 июля 2011, 10:48 [#38]:

меня вот этот код

Цитата (Aristotel):

str:=LabeledEdit1.Text;
k:=Length(str);
str[k+1]:=#0;

смущает. Это не С/С++, тут не нужно зануливать последний символ.

А код фильтрации в принципе верный. Он позволяет любые кириллические символы вводить? И привязана ли эта процедура к компоненту? (хотя судя по названию - наверное да).
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 7 июля 2011, 10:51 [#39]:

Цитата (Aristotel):

У меня почему то не пашет хотя сделал как у тебя

Ну мой ехе-шник ты запускать пробовал? У меня он нормально работает.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 21:45
Выполнено за 0.03 сек.