Проверка ввода на Кириллицу в DBGrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

maksmkv, почему не занимается -- Alexs занимается. Даже свои компоненты точит во всю. Обычно он выступает экспертом.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

maksmkv писал(а):такое ощущение, что на Lazarus БД никто не делает и проверкой не заморачивается

Как раз всё с точностью до наоборот - БД тут совершенно не при чём, никто не заморачивается отсеиванием русских букв... ;-)
Если конкретно по вопросу - как Вы относитесь к функции Pos()? Она Вам сильно не нравится?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

maksmkv писал(а):и проверкой не заморачивается

Вообще-то у меня за два десятка лет работы с БД никогда не было задачи не допускать ввода символов в грид. Наоборот, проблемы всегда были с обеспечением беспрепятственного ввода в любой кодировке. А очистка данных от лишнего делается в AfterEdit или вообще на стороне сервера, триггером и встроенной процедурой.
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

Вот такой номер должен прокатить:

Код: Выделить всё

procedure TForm1.DBGrid1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
var
  Key: AnsiChar;
const
  RuLetters: TSysCharSet = [#168, #184, #192..#223];
begin
  //здесь можно вставить проверку системной кодовой страницы
  Key := UTF8ToAnsi(UTF8Key)[1];
  if Key in RuLetters then
    UTF8Key := '';   
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Vadim писал(а):Если конкретно по вопросу - как Вы относитесь к функции Pos()? Она Вам сильно не нравится?

Учитывая, что это второй топик с упоминанием этой функции, которая 100% решила бы проблему TC, вопрошающий еще к ее изучению не приступал :D
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

zoltanleo писал(а):вопрошающий еще к ее изучению не приступал

Ай, и не говорите... Всё-таки серьёзно нынешнее образование задолжало перед нашим молодым поколением... Ох уж мне этот бурундучок Фурсенко, который заявил, что высшая математика убивает креативность... :-D
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Vadim, это математика? Видимо, это личная месть.
maksmkv
новенький
Сообщения: 22
Зарегистрирован: 29.08.2013 23:58:50

Сообщение maksmkv »

По поводу функции Pos() , не хватает логики как реализовать правильно. Делаем простую БД с хранением только в полях латинских букв, русских при вводе не должно быть (БД паролей для внутреннего пользования). Основная деятельность не программирование, но писать ПО хоть криво-косо , но очень нравится. В свое время прочитал книгу по DELPHI Фленова, Культина Delphi в задачах и примерах и другие. По БД специально не сталкивался и вот впервые) По поводу образования - только Pascal на листке был.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

maksmkv писал(а):По поводу функции Pos() , не хватает логики как реализовать правильно

Пишу с телефона, поэтому только тезисно. В uses добавить LazUTF8, в OnKeyPress:

Код: Выделить всё

const rus_char = 'АаБб';//тут можно вообще любые проверяемые символы написать
begin
  if Utf8Pos(key, rus_char) > 0 then key=#0;
end;


Ну и почитать, для чего эта функция нужна
https://lazarus-ccr.sourceforge.io/docs ... f8pos.html
maksmkv
новенький
Сообщения: 22
Зарегистрирован: 29.08.2013 23:58:50

Сообщение maksmkv »

Всем спасибо - тему можно закрывать.
Ответить