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

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

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

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

Сообщение Лекс Айрин » 06.02.2019 20:19:27

maksmkv, почему не занимается -- Alexs занимается. Даже свои компоненты точит во всю. Обычно он выступает экспертом.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение Vadim » 06.02.2019 20:28:01

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

Как раз всё с точностью до наоборот - БД тут совершенно не при чём, никто не заморачивается отсеиванием русских букв... ;-)
Если конкретно по вопросу - как Вы относитесь к функции Pos()? Она Вам сильно не нравится?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Снег Север » 06.02.2019 23:09:49

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

Вообще-то у меня за два десятка лет работы с БД никогда не было задачи не допускать ввода символов в грид. Наоборот, проблемы всегда были с обеспечением беспрепятственного ввода в любой кодировке. А очистка данных от лишнего делается в AfterEdit или вообще на стороне сервера, триггером и встроенной процедурой.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение iskander » 07.02.2019 10:39:55

Вот такой номер должен прокатить:
Код: Выделить всё
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 := '';   
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

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

Сообщение zoltanleo » 07.02.2019 17:05:07

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

Учитывая, что это второй топик с упоминанием этой функции, которая 100% решила бы проблему TC, вопрошающий еще к ее изучению не приступал :D
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

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

Сообщение Vadim » 07.02.2019 19:31:32

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

Ай, и не говорите... Всё-таки серьёзно нынешнее образование задолжало перед нашим молодым поколением... Ох уж мне этот бурундучок Фурсенко, который заявил, что высшая математика убивает креативность... :-D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Лекс Айрин » 07.02.2019 19:40:46

Vadim, это математика? Видимо, это личная месть.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение maksmkv » 09.02.2019 20:03:22

По поводу функции Pos() , не хватает логики как реализовать правильно. Делаем простую БД с хранением только в полях латинских букв, русских при вводе не должно быть (БД паролей для внутреннего пользования). Основная деятельность не программирование, но писать ПО хоть криво-косо , но очень нравится. В свое время прочитал книгу по DELPHI Фленова, Культина Delphi в задачах и примерах и другие. По БД специально не сталкивался и вот впервые) По поводу образования - только Pascal на листке был.
maksmkv
новенький
 
Сообщения: 22
Зарегистрирован: 29.08.2013 23:58:50

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

Сообщение zoltanleo » 10.02.2019 01:46:57

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
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

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

Сообщение maksmkv » 10.02.2019 10:57:59

Всем спасибо - тему можно закрывать.
maksmkv
новенький
 
Сообщения: 22
Зарегистрирован: 29.08.2013 23:58:50

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 42

Рейтинг@Mail.ru