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

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

Перевести буквы на другой язык


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]

У каждой "Буквы" есть свой код, используя его можешь сделать процедуры перевода во что хочешь...


Наверх

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