Имя: Пароль:
1C
 
Проверка на латинские буквы
0 DeMi4
 
29.07.10
16:13
В Семерке было OemToAnsi а как теперь в восьмерке
1 DeMi4
 
29.07.10
16:20
Может кто знает или сталкивался надо проверить строку на ввод латинских букв
2 Живой Ископаемый
 
29.07.10
16:21
что значить проверить?
3 shuhard
 
29.07.10
16:21
(1)разве диапазона кода символа не достаточно ?
4 OmieR
 
29.07.10
17:40
что-нибудь типа того:

   ПроверяемыеДанные = Врег(Данные);
   ЕстьОшибки = Ложь;
   ДлинаСтроки = СтрДлина(Данные);
   Сч = 1;
   
   Для Сч = 1 по ДлинаСтроки Цикл
       КодСимвола = КодСимвола(ПроверяемыеДанные,Сч);
       Если (КодСимвола >= 65 И КодСимвола <= 90) Тогда        
           Продолжить;
       КонецЕсли;
       ЕстьОшибки = Истина;
       Прервать;
   КонецЦикла;
5 DeMi4
 
30.07.10
09:23
(2) Ну что бы бухгалтер ввел идентификатор именно на Английскими буквами
6 DeMi4
 
30.07.10
09:24
(3) что за диапозон кода символа
7 almar
 
30.07.10
09:33
Функция СтрокаНаписанаПоАнглийски(Знач СтрокаПараметр) Экспорт

   СтрокаПараметр = СокрЛП(СтрокаПараметр);    

   СписокДопустимыхЗначений = Новый СписокЗначений;
   СписокДопустимыхЗначений.Добавить(184);
   СписокДопустимыхЗначений.Добавить(168);
   СписокДопустимыхЗначений.Добавить(45);
   СписокДопустимыхЗначений.Добавить(46);
   СписокДопустимыхЗначений.Добавить(32);
   СписокДопустимыхЗначений.Добавить(48);
   СписокДопустимыхЗначений.Добавить(49);
   СписокДопустимыхЗначений.Добавить(50);
   СписокДопустимыхЗначений.Добавить(51);
   СписокДопустимыхЗначений.Добавить(52);
   СписокДопустимыхЗначений.Добавить(53);
   СписокДопустимыхЗначений.Добавить(54);
   СписокДопустимыхЗначений.Добавить(55);
   СписокДопустимыхЗначений.Добавить(56);
   СписокДопустимыхЗначений.Добавить(57);

   Для Сч=1 По СтрДлина(СтрокаПараметр) Цикл
       Код = КодСимвола(СтрокаПараметр,Сч);
       Если (Код>=192) И (СписокДопустимыхЗначений.НайтиПоЗначению(Код) = Неопределено) Тогда
           Возврат Ложь;
       КонецЕсли;
   КонецЦикла;

   Возврат Истина;
КонецФункции
8 Aprobator
 
30.07.10
09:35
(7) ну вот - пятница началась )
9 aka AMIGO
 
30.07.10
09:39
в дополнение пятничных тем и постов :))

   Тмп = Сред(Имя, 6,2);
   ЛатA = КодСимв("A");
   ЛатZ = КодСимв("Z");
   Для х=1 По 2 Цикл
       с = КодСимв(Сред(Тмп,х,1));
       Если (с>=ЛатA) и (с<=ЛатZ) Тогда
       Иначе
           Предупреждение("Ошибка в "+Тмп+ " !");
           Сообщить("Ошибка в "+Тмп+ " - не латинские буквы!");
           Возврат;
       КонецЕсли;
   КонецЦикла;

ЗЫ. правда, это код 7-рочный, но, думаю, конвертировать недолго :)
10 aka AMIGO
 
30.07.10
09:42
а вот проверка на русскость:
   РусА = КодСимв("А");
   РусЯ = КодСимв("Я");
   Тмп = Сред(Имя,1,4);
   Для х=1 По 4 Цикл
       с = КодСимв(Сред(Тмп,х,1));
       Если (с>=РусА) и (с<=РусЯ) Тогда
       Иначе
           Предупреждение("Ошибка в "+Тмп+ " пиши по-русски!");
           Сообщить("Ошибка в "+Тмп+ " !");
           Возврат;
       КонецЕсли;
   КонецЦикла;
11 aka AMIGO
 
30.07.10
09:44
ну, и на цифры уж..

   Циф0 = КодСимв("0");
   Циф9 = КодСимв("9");
   Тмп = Сред(Имя, 11,2);
   Для х=1 По 2 Цикл
       с = КодСимв(Сред(Тмп,х,1));
       Если (с>=Циф0) и (с<=Циф9) Тогда
       Иначе
           Предупреждение("Ошибка в "+Тмп+ " !");
           Сообщить("Ошибка в "+Тмп+ " !");
           Возврат;
       КонецЕсли;
   КонецЦикла;


ЗЫ. с пятницей!! :))
12 Gluk
 
30.07.10
09:49
А что если так (наколенке):
АнглийскиеСимволы = "abcdefghijklmnopqrstuwvxyz";
ПрверяемыйТекст = "йцуqwe";
Для СчетчикЦикла = 1 По СтрДлина(ПрверяемыйТекст) Цикл
   Если Найти(АнглийскиеСимволы,НРег(Сред(ПрверяемыйТекст,СчетчикЦикла,1))) > 0 Тогда
       Сообщить("Есть");
       Прервать;
   КонецЕсли;
КонецЦикла;
13 DeMi4
 
30.07.10
09:50
А проще ни как к примеру через OemTOAnsi тоесть через перекодирование
14 aka AMIGO
 
30.07.10
10:03
(12) ты ищешь английские символы, а автору надо проверить отсутствие кириллицы..
а вообще-то пойдет и такое :)

(13) - это - вряд-ли:
тебе надо проверить принадлежность символов к разным половинкам кодовой таблицы
а твой вариант не делает никаких перемещений, ну, типа, из одной половины таблицы -кириллицы - в другую - латиницу.

ИМХО можно прикрутить PuntoSwitcher, или как он там обзывается, только это тоже половичатое решение..

в общем - думай :)

ЗЫ. в (9) и (10) - проверка только на верхнем регистре, НРег() меня не интересовал
15 skunk
 
30.07.10
10:08
олеРегВыражение = Новый COMОбъект("VBScript.RegExp");
олеРегВыражение.MultiLine = Ложь;
олеРегВыражение.Global = Истина;
олеРегВыражение.Pattern = "[^A-z0-9]";
стрОтвет = RegExp.Replace(стрПоиска, "");
16 aka AMIGO
 
30.07.10
10:26
+14  OemToAnsi перекодирует из DOS-кодировки в Windows, т.е. вообще цель другая
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан