Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Трансляция тарабарского языка* [D7, XP]


mctarik ©   (2006-01-17 16:35:00) 

Здравствуйте Дельфийские Гуру!

У меня возникла идея по трансляции тарабарского языка*
...
А-A
Б-B
В-V
...

Просмотрев форум наткнулся на эту ветку :
Функция перевода строки из русской в английскую и наоборот.

Переделав функцию
...
Function Translete(l:bool; c:char):char;
begin
if l = true then
begin
if c = char('A') then c:= char('А');
if c = char('B') then c:= char('Б');
if c = char('V') then c:= char('В');
if c = char('G') then c:= char('Г');
if c = char('D') then c:= char('Д');
if c = char('YE') then c:= char('Е');
if c = char('YO') then c:= char('Ё');
if c = char('ZH') then c:= char('Ж');
if c = char('Z') then c:= char('З');
if c = char('I') then c:= char('И');
if c = char('Y~') then c:= char('Й');
if c = char('K') then c:= char('К');
if c = char('L') then c:= char('Л');
if c = char('M') then c:= char('М');
if c = char('N') then c:= char('Н');
if c = char('O') then c:= char('О');
if c = char('P') then c:= char('П');
if c = char('R') then c:= char('Р');
if c = char('S') then c:= char('С');
if c = char('T') then c:= char('Т');
if c = char('U') then c:= char('У');
if c = char('F') then c:= char('Ф');
if c = char('KH') then c:= char('Х');
if c = char('TS') then c:= char('Ц');
if c = char('CH') then c:= char('Ч');
if c = char('SH') then c:= char('Ш');
if c = char('SHCH') then c:= char('Щ');
if c = char(',.') then c:= char('Ъ');
if c = char('Y') then c:= char('Ы');
if c = char(',') then c:= char('Ь');
if c = char('E') then c:= char('Э');
if c = char('YU') then c:= char('Ю');
if c = char('YA') then c:= char('Я');

if c = char('a') then c:= char('а');
if c = char('b') then c:= char('б');
if c = char('v') then c:= char('в');
if c = char('g') then c:= char('г');
if c = char('d') then c:= char('д');
if c = char('ye') then c:= char('е');
if c = char('yo') then c:= char('ё');
if c = char('zh') then c:= char('ж');
if c = char('z') then c:= char('з');
if c = char('i') then c:= char('и');
if c = char('y~') then c:= char('й');
if c = char('k') then c:= char('к');
if c = char('l') then c:= char('л');
if c = char('m') then c:= char('м');
if c = char('n') then c:= char('н');
if c = char('o') then c:= char('о');
if c = char('p') then c:= char('п');
if c = char('r') then c:= char('р');
if c = char('s') then c:= char('с');
if c = char('t') then c:= char('т');
if c = char('u') then c:= char('у');
if c = char('f') then c:= char('ф');
if c = char('kh') then c:= char('х');
if c = char('ts') then c:= char('ц');
if c = char('ch') then c:= char('ч');
if c = char('sh') then c:= char('ш');
if c = char('shch') then c:= char('щ');
if c = char(',.') then c:= char('ъ');
if c = char('y') then c:= char('ы');
if c = char(',') then c:= char('ь');
if c = char('e') then c:= char('э');
if c = char('yu') then c:= char('ю');
if c = char('ya') then c:= char('я');

end;

if l = false then
begin
if c = char('А') then c:= char('A');
if c = char('Б') then c:= char('B');
if c = char('В') then c:= char('V');
if c = char('Г') then c:= char('G');
if c = char('Д') then c:= char('D');
if c = char('Е') then c:= char('YE');
if c = char('Ё') then c:= char('YO');
if c = char('Ж') then c:= char('ZH');
if c = char('З') then c:= char('Z');
if c = char('И') then c:= char('I');
if c = char('Й') then c:= char('Y~');
if c = char('К') then c:= char('K');
if c = char('Л') then c:= char('L');
if c = char('М') then c:= char('M');
if c = char('Н') then c:= char('N');
if c = char('О') then c:= char('O');
if c = char('П') then c:= char('P');
if c = char('Р') then c:= char('R');
if c = char('С') then c:= char('S');
if c = char('Т') then c:= char('T');
if c = char('У') then c:= char('U');
if c = char('Ф') then c:= char('F');
if c = char('Х') then c:= char('KH');
if c = char('Ц') then c:= char('TS');
if c = char('Ч') then c:= char('CH');
if c = char('Ш') then c:= char('SH');
if c = char('Щ') then c:= char('SHCH');
if c = char('Ъ') then c:= char(',.');
if c = char('Ы') then c:= char('Y');
if c = char('Ь') then c:= char(',');
if c = char('Э') then c:= char('E');
if c = char('Ю') then c:= char('YU');
if c = char('Я') then c:= char('YA');

if c = char('а') then c:= char('a');
if c = char('б') then c:= char('b');
if c = char('в') then c:= char('b');
if c = char('г') then c:= char('g');
if c = char('д') then c:= char('d');
if c = char('е') then c:= char('ye');
if c = char('ё') then c:= char('yo');
if c = char('ж') then c:= char('zh');
if c = char('з') then c:= char('z');
if c = char('и') then c:= char('i');
if c = char('й') then c:= char('y~');
if c = char('к') then c:= char('k');
if c = char('л') then c:= char('l');
if c = char('м') then c:= char('m');
if c = char('н') then c:= char('n');
if c = char('о') then c:= char('o');
if c = char('п') then c:= char('p');
if c = char('р') then c:= char('r');
if c = char('с') then c:= char('s');
if c = char('т') then c:= char('t');
if c = char('у') then c:= char('u');
if c = char('ф') then c:= char('f');
if c = char('х') then c:= char('kh');
if c = char('ц') then c:= char('ts');
if c = char('ч') then c:= char('ch'); // Ошибка...
if c = char('ш') then c:= char('sh'); //
if c = char('щ') then c:= char('shch'); //
if c = char('ъ') then c:= char(',.'); //
if c = char('ы') then c:= char('y');
if c = char('ь') then c:= char(',');
if c = char('э') then c:= char('e');
if c = char('ю') then c:= char('yu'); //
if c = char('я') then c:= char('ya'); // Короче везде где есть два и более символов
end;

result := c;
end;
...

Столкнулся с такой ошибкой : invalid typecast

Как монжно сделать функцию чтоб небыло данной ошибки?

З.Ы Тарабарский язык* - ИМХО!


kukuikar   (2006-01-18 14:06:00) [1]


> Но правда у кого есть из Lat в Rus!

смотри [3]


Gero   (2006-01-17 23:08:00) [2]

Это не из Автошемы случайно? Честно, очень похоже.


Fay   (2006-01-17 20:03:00) [3]

Самый жуткий код, который я помню.
Бр-р-р!


ferr   (2006-01-17 19:45:00) [4]

перечитал ещё раз код, может это развод?


ferr   (2006-01-17 19:44:00) [5]

ну и код, однако...


mctarik   (2006-01-17 18:34:00) [6]


> kukuikar ©   (17.01.06 17:47) [7]


Да функция работает отлично!

Но правда у кого есть из Lat в Rus!


Игорь Шевченко   (2006-01-17 18:08:00) [7]


> Обратно для ГОСТовского предобразования, как 2 байта переслать,
>  а если человек написал "й" = "j", а не "y"?
> Что делать?


Это еще полбеды, а вот если в разных местах одна и та же буква пишется по-разному...Как в загранпаспортах, например


kukuikar   (2006-01-17 17:47:00) [8]

[3] писался согласно ГОСТ.
Вы все уверены что все пишут так?
Я нет. Более того, я уверенчто так пишут не все.

Обратно для ГОСТовского предобразования, как 2 байта переслать, а если человек написал "й" = "j", а не "y"?
Что делать?


Johnmen   (2006-01-17 17:20:00) [9]

>kukuikar ©   (17.01.06 17:02) [3]

Теперь попробуй обратно :)))))))))))

Я тоже фигею, когда не зная основ, и т.д. и т.п.


ANB   (2006-01-17 17:18:00) [10]


> kukuikar ©   (17.01.06 17:02) [3]

лучше обратную напиши. В траслит то куча прог умеет закидывать.


mctarik   (2006-01-17 17:17:00) [11]


> Плохиш ©   (17.01.06 16:54) [2]


Фигеть надо в других ветках (Основная, ...)
:(

> kukuikar ©   (17.01.06 17:02) [3]

Огромное спасибо! :)
> ANB ©   (17.01.06 16:52) [1]

Спасибо за науку, всех вам благ! ;)


kukuikar   (2006-01-17 17:02:00) [12]


function TranslitRus2Lat(const Str: string): string;
const
 RArrayL = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя';
 RArrayU = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ';
 colChar = 33;
 arr: array[1..2, 1..ColChar] of string =
 (('a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh', 'z', 'i', 'y',
   'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f',
   'kh', 'ts', 'ch', 'sh', 'shch', '''', 'y', '''', 'e', 'yu', 'ya'),
   ('A', 'B', 'V', 'G', 'D', 'E', 'Yo', 'Zh', 'Z', 'I', 'Y',
   'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F',
   'Kh', 'Ts', 'Ch', 'Sh', 'Shch', '''', 'Y', '''', 'E', 'Yu', 'Ya'));
var
 i: Integer;
 LenS: Integer;
 p: integer;
 d: byte;
begin
 result := '';
 LenS := length(str);
 for i := 1 to lenS do
 begin
   d := 1;
   p := pos(str[i], RArrayL);
   if p = 0 then
   begin
     p := pos(str[i], RArrayU);
     d := 2
   end;
   if p <> 0 then
     result := result + arr[d, p]
   else
     result := result + str[i]; //если не русская буква, то берем исходную
 end;
end;


Плохиш   (2006-01-17 16:54:00) [13]


> Столкнулся с такой ошибкой : invalid typecast

char - это одинсимвол, а не строка.
Я фигею, не зная основ пытаются писать суперпупер проги.


ANB   (2006-01-17 16:52:00) [14]


> char('YE')

2 символа не могут быть Char. Это уже строка.
ЗЫ. В юникоде один символ занимает 2 байта.


Наверх

Титульная страница Поиск, карта сайта Написать письмо