![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевести буквы на другой язык
arturich © (2007-03-28 23:18:00)Здравствуйте, как перевести некий текст на русском из, скажем, edit1, в транслит в edit2? Есть ли примеры в интернете с исходниками? Спасибо большое
Desdechado (2007-04-10 11:17:00) [1]> Один раз опиши два массива и все тут... или даже одного массива хватит.
Если надо в обе стороны, то одного не хватит.
Например, 'PH'->'Ф', но 'Ф'->'F'.
{RASkov} (2007-04-08 05:54:00) [2]> [4] arturich © (07.04.07 16:49)
Если одному русскому символу может соответствовать более одного символа другого алфавита то вариантов больше врядли будет....
Один раз опиши два массива и все тут... или даже одного массива хватит.
Например:
TransChars: array [192..255] of String = ('A','B','V','G','D','E','J','Z',...'yu','ya'); Букву Ёё обработаешь отдельно в самой процедуре перевода.
И
function RusCharTranslit(const Ch: Char): String;
begin
Result:=Ch;
case ORD(Ch) of
168: Result:='E'; //Ch=Ё
184: Result:='e'; //Ch=ё
end;
if ORD(Ch)<192 then Exit;
Result:=TransChars[ORD(Ch)];
end;
arturich (2007-04-07 16:49:00) [3]Спасибо!
Подскажите, пожалуйста, какие ещё могут быть варианты?
Desdechado (2007-03-29 11:58:00) [4]Проще 2 массива соответствий.
RASkov (2007-03-28 23:34:00) [5]Или вот....
Не совсем красиво, но для начала можно и так можно попробывать
function RusCharTranslitToEng(const S: Char): String;
begin
Result:=S;
case S of
........
'Б': Result:='B';
'б': Result:='b';
........
'ч': Result:='ch';
'Ч': Result:='Ch';
..........
end;
end;
function RusTranslitToEng(const S: String): String;
begin
Result:='';
for N:= 1 to Length(S) do Result:=Result+RusCharTranslitToEng(S[N]);
end;
RASkov (2007-03-28 23:23:00) [6]У каждой "Буквы" есть свой код, используя его можешь сделать процедуры перевода во что хочешь...