![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Трансляция тарабарского языка* [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 байта.