![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция перевода строки из русской в английскую и наоборот.
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;