Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизПеревести буквы на другой язык Найти похожие ветки
← →
arturich © (2007-03-28 23:18) [0]Здравствуйте, как перевести некий текст на русском из, скажем, edit1, в транслит в edit2? Есть ли примеры в интернете с исходниками? Спасибо большое
← →
RASkov (2007-03-28 23:23) [1]У каждой "Буквы" есть свой код, используя его можешь сделать процедуры перевода во что хочешь...
← →
RASkov (2007-03-28 23:34) [2]Или вот....
Не совсем красиво, но для начала можно и так можно попробывать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;
← →
Desdechado © (2007-03-29 11:58) [3]Проще 2 массива соответствий.
← →
arturich © (2007-04-07 16:49) [4]Спасибо!
Подскажите, пожалуйста, какие ещё могут быть варианты?
← →
{RASkov} (2007-04-08 05:54) [5]> [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;
← →
Desdechado © (2007-04-10 11:17) [6]> Один раз опиши два массива и все тут... или даже одного массива хватит.
Если надо в обе стороны, то одного не хватит.
Например, "PH"->"Ф", но "Ф"->"F".
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c