Текущий архив: 2006.02.05;
Скачать: CL | DM;
Вниз
Трансляция тарабарского языка* Найти похожие ветки
← →
mctarik © (2006-01-17 16:35) [0]Здравствуйте Дельфийские Гуру!
У меня возникла идея по трансляции тарабарского языка*
...
А-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
Как монжно сделать функцию чтоб небыло данной ошибки?
З.Ы Тарабарский язык* - ИМХО!
← →
ANB © (2006-01-17 16:52) [1]
> char("YE")
2 символа не могут быть Char. Это уже строка.
ЗЫ. В юникоде один символ занимает 2 байта.
← →
Плохиш © (2006-01-17 16:54) [2]
> Столкнулся с такой ошибкой : invalid typecast
char - это один символ, а не строка.
Я фигею, не зная основ пытаются писать суперпупер проги.
← →
kukuikar © (2006-01-17 17:02) [3]
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;
← →
mctarik © (2006-01-17 17:17) [4]
> Плохиш © (17.01.06 16:54) [2]
Фигеть надо в других ветках (Основная, ...) :(
> kukuikar © (17.01.06 17:02) [3]
Огромное спасибо! :)
> ANB © (17.01.06 16:52) [1]
Спасибо за науку, всех вам благ! ;)
← →
ANB © (2006-01-17 17:18) [5]
> kukuikar © (17.01.06 17:02) [3]
лучше обратную напиши. В траслит то куча прог умеет закидывать.
← →
Johnmen © (2006-01-17 17:20) [6]>kukuikar © (17.01.06 17:02) [3]
Теперь попробуй обратно :)))))))))))
Я тоже фигею, когда не зная основ, и т.д. и т.п.
← →
kukuikar © (2006-01-17 17:47) [7][3] писался согласно ГОСТ.
Вы все уверены что все пишут так?
Я нет. Более того, я уверен что так пишут не все.
Обратно для ГОСТовского предобразования, как 2 байта переслать, а если человек написал "й" = "j", а не "y"?
Что делать?
← →
Игорь Шевченко © (2006-01-17 18:08) [8]
> Обратно для ГОСТовского предобразования, как 2 байта переслать,
> а если человек написал "й" = "j", а не "y"?
> Что делать?
Это еще полбеды, а вот если в разных местах одна и та же буква пишется по-разному...Как в загранпаспортах, например
← →
mctarik © (2006-01-17 18:34) [9]
> kukuikar © (17.01.06 17:47) [7]
Да функция работает отлично!
Но правда у кого есть из Lat в Rus!
← →
ferr © (2006-01-17 19:44) [10]ну и код, однако...
← →
ferr © (2006-01-17 19:45) [11]перечитал ещё раз код, может это развод?
← →
Fay © (2006-01-17 20:03) [12]Самый жуткий код, который я помню.
Бр-р-р!
← →
Gero © (2006-01-17 23:08) [13]Это не из Автошемы случайно? Честно, очень похоже.
← →
kukuikar © (2006-01-18 14:06) [14]
> Но правда у кого есть из Lat в Rus!
смотри [3]
Страницы: 1 вся ветка
Текущий архив: 2006.02.05;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.012 c