Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2009, 01:28   #1
StartMis
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 175
По умолчанию перевести символ из латиницы в кириллицу

подскажите есть ли функция для перевода символа из латиницы в кириллицу? т.е из 'D' в 'В'
StartMis вне форума Ответить с цитированием
Старый 30.11.2009, 01:57   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
 L: array[0..25] of char = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
   'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
 K: array[0..25] of char = ('ф', 'и', 'с', 'в', 'у', 'а', 'п', 'р', 'ш', 'о', 'л', 'д',
   'ь', 'т', 'щ', 'з', 'й', 'к', 'ы', 'е', 'г', 'м', 'ц', 'ч', 'н', 'я');
var
 i: byte;
begin
 for i := 0 to 25 do
 begin
  //Проверяем в нижнем регистре
  if Edit1.Text[1] = L[i] then
  begin
   Edit2.Text := K[i];
   Break;
  end;
  //И в верхнем тоже
  if Edit1.Text[1] = AnsiUpperCase(L[i]) then
  begin
   Edit2.Text := AnsiUpperCase(K[i]);
   Break;
  end;
 end;
end;
Тут переводятся только английские буквы, я думаю, вы сможете сами добавить и символы. Например английская запятая соответствует русской букве "б".
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 30.11.2009, 10:07   #3
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Можно добавить сначала проверку раскладки клавиатуры
Код:
var Lang: boolean; // глобально
procedure TForm1.Timer1Timer(Sender: TObject); // автоматич. определение раскладки клавиатуры
begin
  if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then
  lang:= true  //раскладка английская
  else
  lang:= false; //раскладка НЕанглийская, например 68748313 соответствует русской
end;
И если lаng = true и код нажатой клавиши в диапазоне
[65 .. 90] (латин. символы), то переводить символ в русскую раскладку через массив,как показано выше.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Символ в ячейке ZHirnovMaxim Microsoft Office Excel 1 19.11.2009 09:28
Символ Paul_AG Общие вопросы C/C++ 4 03.06.2009 21:06
Преобразование VK в символ Minimus Win Api 10 02.06.2009 01:37
Символ с ошибкой KLOP Общие вопросы Delphi 2 19.12.2008 09:20
Непечатный символ Родион Общие вопросы Delphi 3 09.10.2008 15:17