Показать сообщение отдельно
Старый 03.07.2009, 17:15   #2  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
получился код
X++:
static void Job110(Args _args)
{
    str rus = 'Василиса Васильев';
    str eng = '';
    str abc,old;
    int i;
    ;

//    if('ВАСЯ'=='вася') info('одинаково');

    for(i=1; i <= strlen(rus); i++)
    {
     //ПРИКАЗ МВД РФ от 31.12.2003 N 1047
     abc = SubStr(rus,i,1);
         switch (abc)
         {
             case 'а' : eng += 'a'; break;
             case 'А' : eng += 'A'; break;
             case 'б' : eng += 'b'; break;
             case 'Б' : eng += 'B'; break;
             case 'в' : eng += 'v'; break;
             case 'В' : eng += 'V'; break;
             case 'г' : eng += 'g'; break;
             case 'Г' : eng += 'G'; break;
             case 'д' : eng += 'd'; break;
             case 'Д' : eng += 'D'; break;
             case 'е' : if(old == 'ь') eng += 'y';
                         eng += 'e'; break;
             case 'Е' : if(old == 'ь') eng += 'Y';
                         eng += 'E'; break;
             case 'ё' : if(old == 'ь') eng += 'y';
                        eng += 'e'; break;
             case 'Ё' : if(old == 'ь') eng += 'Y';
                         eng += 'E'; break;
             case 'ж' : eng += 'zh'; break;
             case 'Ж' : eng += 'ZH'; break;
             case 'з' : eng += 'z'; break;
             case 'З' : eng += 'Z'; break;
             case 'и' : eng += 'i'; break;
             case 'И' : eng += 'I'; break;
             case 'й' : eng += 'y'; break;
             case 'Й' : eng += 'Y'; break;
             case 'к' : eng += 'k'; break;
             case 'К' : eng += 'K'; break;
             case 'л' : eng += 'l'; break;
             case 'Л' : eng += 'L'; break;
             case 'м' : eng += 'm'; break;
             case 'М' : eng += 'M'; break;
             case 'н' : eng += 'n'; break;
             case 'Н' : eng += 'N'; break;
             case 'о' : eng += 'o'; break;
             case 'О' : eng += 'O'; break;
             case 'п' : eng += 'p'; break;
             case 'П' : eng += 'P'; break;
             case 'р' : eng += 'r'; break;
             case 'Р' : eng += 'R'; break;
             case 'с' : eng += 's'; break;
             case 'С' : eng += 'S'; break;
             case 'т' : eng += 't'; break;
             case 'Т' : eng += 'T'; break;
             case 'у' : eng += 'u'; break;
             case 'У' : eng += 'U'; break;
             case 'ф' : eng += 'f'; break;
             case 'Ф' : eng += 'F'; break;
             case 'х' : eng += 'rh'; break;
             case 'Х' : eng += 'RH'; break;
             case 'ц' : eng += 'ts'; break;
             case 'Ц' : eng += 'TS'; break;
             case 'ч' : eng += 'ch'; break;
             case 'Ч' : eng += 'CH'; break;
             case 'ш' : eng += 'sh'; break;
             case 'Ш' : eng += 'SH'; break;
             case 'щ' : eng += 'shch'; break;
             case 'Щ' : eng += 'SHCH'; break;
             case 'ы' : eng += 'y'; break;
             case 'Ы' : eng += 'Y'; break;
             case 'э' : eng += 'e'; break;
             case 'Э' : eng += 'E'; break;
             case 'ю' : eng += 'yu'; break;
             case 'Ю' : eng += 'YU'; break;
             case 'я' : eng += 'ya'; break;
             case 'Я' : eng += 'YA'; break;
         }
        old = StrLWr(SubStr(rus,i,1));
    }

    info(rus + '  ' + eng);
}
Как заставить при сравнении различать регистр букв? Может какой флаг включить?

Последний раз редактировалось Poleax; 03.07.2009 в 17:23.