Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
21st
Май
Преобразовать строку в другую раскладку
Posted by micher under Delphi
Есть строка ‘ghbdtn’ ее нужно преобразовать в ‘привет’ и наоборот строку ‘руддщ’ преобразовать в ‘hello’. Как реализовать?
iworm2009
{если меняет возвращает true}
function ChangeLang(var bufstr: string): boolean;
const
rus: array [1..66] of char = ('й', 'ц', 'у', 'к', 'е', 'н', 'г', 'ш', 'щ',
'з', 'х', 'ъ', 'ф', 'ы', 'в', 'а', 'п', 'р',
'о', 'л', 'д', 'ж', 'э', 'я', 'ч', 'с', 'м',
'и', 'т', 'ь', 'б', 'ю', 'ё',
'Й', 'Ц', 'У', 'К', 'Е', 'Н', 'Г', 'Ш', 'Щ',
'З', 'Х', 'Ъ', 'Ф', 'Ы', 'В', 'А', 'П', 'Р',
'О', 'Л', 'Д', 'Ж', 'Э', 'Я', 'Ч', 'С', 'М',
'И', 'Т', 'Ь', 'Б', 'Ю', 'Ё');
eng: array [1..66] of char = ('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', ',', '.', '`',
'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', '<', '>', '~');
var
i,
l: integer;
k: byte;
isRus,
isEng: boolean;
tmp: Char;
begin
isRus := false;
isEng := false;
result := false;
l := length(bufstr);
if not l > 0 then
exit;
for k := Low(rus) to High(rus) do
if pos(rus[k], bufstr) <> 0 then
isRus := true;
for k := Low(eng) to High(eng) do
if pos(eng[k], bufstr) <> 0 then
isEng := true;
if isRus and isEng then //в строке русский и английский
exit
else if isRus and not isEng then //строка на русском
for i := 1 to l do
begin
k := pos(bufstr, rus);
if k > 0 then
bufstr := eng[k];
end
else if not isRus and isEng then //строка на англ
for i := 1 to l do
begin
k := pos(bufstr, eng);
if k > 0 then
bufstr := rus[k];
end;
result := true;
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)