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

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

Функция перевода строки из русской в английскую и наоборот.


Страницы:   1 2

Kostik ©   (2006-01-17 04:27:00) 

Существует ли какая нибудь функция для быстрого перевода троки например "qwerty" в "йцукен", и наоборот???
Мне надо чтобы программа умела переводить  русский текст в английский и наоборот именно вот таким образом. В хелпах ответа не нашел...


Kostik   (2006-01-17 09:59:00) [21]

с английского на русский


procedure TForm1.Button3Click(Sender: TObject);
var
 i, u : integer;
 s,t : String;
 c : char;
begin

for i := 0 to RichEdit1.Lines.Count-1 do
    begin
     s := RichEdit1.Lines.Strings[i];
     t := '';
     if length(s)>0 then
     for u := 0 to length(s) do
         begin
           c := s[u];
           c := Translete(true, c);
           s[u] := c;
         end;
     RichEdit1.Lines.Strings[i] := s;
    end;
end;


с русского на английской

procedure TForm1.Button4Click(Sender: TObject);
var
 i, u : integer;
 s,t : String;
 c : char;
begin

for i := 0 to RichEdit1.Lines.Count-1 do
    begin
     s := RichEdit1.Lines.Strings[i];
     t := '';
     if length(s)>0 then
     for u := 0 to length(s) do
         begin
           c := s[u];
           c := Translete(false, c);
           s[u] := c;
         end;
     RichEdit1.Lines.Strings[i] := s;
    end;
end;


Спасибо вам большое, помогли!!


Johnmen   (2006-01-17 09:59:00) [22]

Напомнило знаменитую IncDay :)))))))))))0


Kostik   (2006-01-17 09:57:00) [23]

>gdaujk
Большое спасибо!!!

А то я тут написал функцию.. Она очень топорная, поскольку я еще мало Делфи занимаюсь...
Вот, потештесь.. )


Function Translete(l:bool; c:char):char;
begin
if l = true then
begin
 if c = char('Q') then c:= char('Й');
 if c = char('W') then c:= char('Ц');
 if c = char('E') then c:= char('У');
 if c = char('R') then c:= char('К');
 if c = char('T') then c:= char('Е');
 if c = char('Y') then c:= char('Н');
 if c = char('U') then c:= char('Г');
 if c = char('I') then c:= char('Ш');
 if c = char('P') then c:= char('З');
 if c = char('{') then c:= char('Х');
 if c = char('S') then c:= char('Ы');
 if c = char('D') then c:= char('В');
 if c = char('F') then c:= char('А');
 if c = char('G') then c:= char('П');
 if c = char('H') then c:= char('Р');
 if c = char('J') then c:= char('О');
 if c = char('K') then c:= char('Л');
 if c = char('L') then c:= char('Д');
 if c = char('Z') then c:= char('Я');
 if c = char('X') then c:= char('Ч');
 if c = char('C') then c:= char('С');
 if c = char('V') then c:= char('М');
 if c = char('B') then c:= char('И');
 if c = char('N') then c:= char('Т');
 if c = char('M') then c:= char('Ь');
 if c = char('<') then c:= char('Б');
 if c = char('>') then c:= char('Ю');
 if c = char(':') then c:= char('Ж');
 if c = char('"') then c:= char('Э');

 if c = char('q') then c:= char('й');
 if c = char('w') then c:= char('ц');
 if c = char('e') then c:= char('у');
 if c = char('r') then c:= char('к');
 if c = char('t') then c:= char('е');
 if c = char('y') then c:= char('н');
 if c = char('u') then c:= char('г');
 if c = char('i') then c:= char('ш');
 if c = char('o') then c:= char('щ');
 if c = char('p') then c:= char('з');
 if c = char('[') then c:= char('х');
 if c = char(']') then c:= char('ъ');
 if c = char('}') then c:= char('Ъ');
 if c = char('a') then c:= char('ф');
 if c = char('s') then c:= char('ы');
 if c = char('d') then c:= char('в');
 if c = char('f') then c:= char('а');
 if c = char('g') then c:= char('п');
 if c = char('h') then c:= char('р');
 if c = char('j') then c:= char('о');
 if c = char('k') then c:= char('л');
 if c = char('l') then c:= char('д');
 if c = char('z') then c:= char('я');
 if c = char('x') then c:= char('ч');
 if c = char('c') then c:= char('с');
 if c = char('v') then c:= char('м');
 if c = char('b') then c:= char('и');
 if c = char('n') then c:= char('т');
 if c = char('m') then c:= char('ь');
 if c = char(',') then c:= char('б');
 if c = char('.') then c:= char('ю');
 if c = char(';') then c:= char('ж');
 if c = char('''') then c:= char('э');
 if c = char('/') then c:= char('.');
 if c = char('?') then c:= char(',');
end;

if l = false then
begin
 if c = char('Й') then c:= char('Q');
 if c = char('Ц') then c:= char('W');
 if c = char('У') then c:= char('E');
 if c = char('К') then c:= char('R');
 if c = char('Е') then c:= char('T');
 if c = char('Н') then c:= char('Y');
 if c = char('Г') then c:= char('U');
 if c = char('Ш') then c:= char('I');
 if c = char('Щ') then c:= char('O');
 if c = char('З') then c:= char('P');
 if c = char('Х') then c:= char('{');
 if c = char('Ъ') then c:= char('}');
 if c = char('Ф') then c:= char('A');
 if c = char('Ы') then c:= char('S');
 if c = char('В') then c:= char('D');
 if c = char('А') then c:= char('F');
 if c = char('П') then c:= char('G');
 if c = char('Р') then c:= char('H');
 if c = char('О') then c:= char('J');
 if c = char('Л') then c:= char('K');
 if c = char('Д') then c:= char('L');
 if c = char('Я') then c:= char('Z');
 if c = char('Ч') then c:= char('X');
 if c = char('С') then c:= char('C');
 if c = char('М') then c:= char('V');
 if c = char('И') then c:= char('B');
 if c = char('Т') then c:= char('N');
 if c = char('Ь') then c:= char('M');
 if c = char('Б') then c:= char('<');
 if c = char('Ю') then c:= char('>');
 if c = char('Ж') then c:= char(':');
 if c = char('Э') then c:= char('"');

 if c = char('й') then c:= char('q');
 if c = char('ц') then c:= char('w');
 if c = char('у') then c:= char('e');
 if c = char('к') then c:= char('r');
 if c = char('е') then c:= char('t');
 if c = char('н') then c:= char('y');
 if c = char('г') then c:= char('u');
 if c = char('ш') then c:= char('i');
 if c = char('щ') then c:= char('o');
 if c = char('з') then c:= char('p');
 if c = char('х') then c:= char('[');
 if c = char('ъ') then c:= char(']');
 if c = char('ф') then c:= char('a');
 if c = char('ы') then c:= char('s');
 if c = char('в') then c:= char('d');
 if c = char('а') then c:= char('f');
 if c = char('п') then c:= char('g');
 if c = char('р') then c:= char('h');
 if c = char('о') then c:= char('j');
 if c = char('л') then c:= char('k');
 if c = char('д') then c:= char('l');
 if c = char('я') then c:= char('z');
 if c = char('ч') then c:= char('x');
 if c = char('с') then c:= char('c');
 if c = char('м') then c:= char('v');
 if c = char('и') then c:= char('b');
 if c = char('т') then c:= char('n');
 if c = char('ь') then c:= char('m');
 if c = char('б') then c:= char(',');
 if c = char('ю') then c:= char('.');
 if c = char('ж') then c:= char(';');
 if c = char('э') then c:= char('''');
 if c = char('.') then c:= char('/');
 if c = char(',') then c:= char('?');
end;

result := c;
end;


msguns   (2006-01-17 09:53:00) [24]

>gdaujk ©   (17.01.06 08:45) [1]

О, боже ! А нельзя ли все эту дребедень выполнить одним операторомв цикле ?


Ega23   (2006-01-17 09:37:00) [25]


> gdaujk ©   (17.01.06 08:45) [1]


"я" и "Я" не учтены


gdaujk   (2006-01-17 08:47:00) [26]

Использовать

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 Translate(RuCH,EnCh);
end;


PS: функцию точно надо переделать...


gdaujk   (2006-01-17 08:45:00) [27]

Стандартной функции, насколько я знаю, нет. Ниже приведённая функция делалась очень давно, возможны недочёты...
const
 EnCH: string = '`qwertyuiop[]asdfghjkl;zxcvbnm,./~!@#$%^&*()_+|QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM?';
 RuCH: string = 'ёйцукенгшщзхъфывапролджячсмитьбю.Ё!"№;%:?*()_+/ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,';

procedure TForm1.Translate(NowLang,FutureLang: string);
var
 i, j: word;
 Ch: Char;
begin
 Memo2.Text := '';
 for i := 1 to length(Memo1.Text) do
   begin
     Ch := chr(0);
     for j := 1 to Length(NowLang) do
       if NowLang[j] = Memo1.Text[i]
         then
           begin
             Ch := FutureLang[j];
             Break;
           end;
     if Memo1.Text[i] = chr(39) then Ch := 'э';
     if Memo1.Text[i] = 'э' then Ch := Chr(39);
     if Ch = Chr(0)
       then Ch := Memo1.Text[i];
     Memo2.Text := Memo2.Text + Ch;
   end;
end;


Страницы:   1 2

Наверх

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