Забывая переключить раскладку на клавиатуре с одного языка на другой (например, с
английского языка на русский), мы мягко себя ругаем. Поэтому такие фразы, yfgbcfyyst
heccrbvb ,erdfvb yf fyukbqcrjq hfcrkflrt, неохота заново набирать.
Вот нижеуказанная функция.
function ConvertRuEn(s: string; En: boolean): string;
const RuEn: array[0..1, 0..32] of string = (('й', 'ц', 'у', 'к', 'е', 'н', 'г',
'ш', 'щ', 'з', 'ф', 'ы', 'в', 'а', 'п', 'р', 'о', 'л', 'д', 'я', 'ч',
'с', 'м', 'и', 'т', 'ь', '?', '.', ',', '"', '№', ';', ':'),
('q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f',
'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '&', '/',
'?', '@', '#', '$', '^'));
RuEn1: array[0..1, 0..13] of string = (('х', 'Х', 'ъ', 'Ъ', 'ж', 'Ж', 'э',
'Э', 'б', 'Б', 'ю', 'Ю', 'ё', 'Ё'), ('[', '{', ']', '}', ';', ':', '''',
'"', ',', '<', '.', '>', '`', '~'));
var i: integer;
begin
if En then
begin
for i:=Low(RuEn[0]) to High(RuEn[0]) do
s:=StringReplaceNew(s, RuEn[0, i], RuEn[1, i], false, false);
for i:=Low(RuEn1[0]) to High(RuEn1[0]) do
s:=StringReplaceNew(s, RuEn1[0, i], RuEn1[1, i], true, false);
end else
begin
for i:=High(RuEn1[0]) downto Low(RuEn1[0]) do
s:=StringReplaceNew(s, RuEn1[1, i], RuEn1[0, i], false, true);
for i:=High(RuEn[0]) downto Low(RuEn[0]) do
s:=StringReplaceNew(s, RuEn[1, i], RuEn[0, i], false, false);
end;
Result:=s;
end;
где:
s – исходная строка;
En – конвертировать на русскую (false) или английскую
(true) раскладку
клавиатуры.
Например,
ConvertRuEn('ЩЫЖ ЭЦштвщцы 7Э', true) выведет
'OS: "Windows 7"';
ConvertRuEn('{jxtim& Cvfqkbr/', false) выведет
'Хочешь? Смайлик.'.
Примечание. Для полноценной работы данной функции
необходимо скопировать вспомогательную функцию "Замена
символа или фразы на новое значение":
function StringReplaceNew(s, OldPattern, NewPattern: string; RegOld, RegNew: boolean): string;
|