Реализация проверки на русский ввод в PSQL

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
gvy
Сообщения: 9
Зарегистрирован: 28 авг 2006, 14:13

Реализация проверки на русский ввод в PSQL

Сообщение gvy » 31 авг 2006, 10:08

Хочу избавиться от UDF. Там есть функция, которая проверяет строку на отсутствие латинских букв
(что буквы только русские). Вызывается она из ограничения check для колонок.
Может кто подскажет, как это же эффективно реализовать в PSQL?
Вот исходник. Заранее благодарю.

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

/*
        Возвращает false, если строка содержит латинские(ASCII) буквы.
*/
NB_UDF_API bool nb_udf_is_native( const char *s )
{
        if ( !s )
                return true;

        for( ; *s; s++ ) {
                if ( iscntrl(*s) || isascii(*s) && !( isdigit(*s) || isspace(*s) || ispunct(*s) ) )
                        return false;
        }

        return true;
}
модератор: люди, пользуйтесь тэгом code !!!

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 31 авг 2006, 11:06

Эффективно - никак.

mdfv
Сообщения: 119
Зарегистрирован: 23 май 2006, 15:53

Сообщение mdfv » 31 авг 2006, 11:50

А если очень надо, то можно и извращенским способом

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

i=1;
nerus=0;
while (i<=Char_length(stroka)) do
 begin
 ch=substring(stroka from i for 1);
 if (not(((ch>='А')and(ch<='Я'))or((ch>='а')and(ch<='я'))or(ch=' '))) then begin
                                                        nerus=1;
                                                        leave;
                                                        end

 i=i+1;
 end

Ответить