Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi - массивы 
:(
    Опции темы
dForm
Дата 30.11.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.11.2009

Репутация: нет
Всего: нет



Доброе время суток! Просьба помочь с созданием функции смены языка в текстовом редакторе(Через меню). Я начал с того что создал два массива содержащие англ. и рус. буквы,а вот что и как дальше не понимаю. Помогите пожалуйста разобраться
PM MAIL   Вверх
morpheyushka
Дата 30.11.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



Проверяем какой язык установлен и меняем. Устанавливаем русский:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ActivateKeyboardLayout(LoadKeyboardLayout('00000419', 0), 0);
end;


Устанавливаем английский:
Код

procedure TForm1.Button2Click(Sender: TObject);
begin
  ActivateKeyboardLayout(LoadKeyboardLayout('00000409', 0), 0);
end;



--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
dForm
Дата 30.11.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.11.2009

Репутация: нет
Всего: нет



Еслибы было все так простоsmile Нужно через массив(
PM MAIL   Вверх
morpheyushka
Дата 1.12.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



Цитата(dForm @  30.11.2009,  18:37 Найти цитируемый пост)
Еслибы было все так просто

А что тут сложного...считывай OnKeyPres код нажатой клавиши...и по алгоритму (там последовательность символов) выдавай нужную из своего массива...немного посидеть и все будет работать


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
Hexel
Дата 2.12.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.10.2007
Где: UA

Репутация: нет
Всего: нет



например

Код


type
  TCharMap = array[Char] of Char; // :) это будет таблица замены символов

var
  CharMap: TCharMap;

function GetCharMap(): TCharMap ;
var
  cs: TCharMap 
  i, delta: Integer;

begin
  // заполнить таблицу
  for i := 0 to 255 do
    cs[Chr(i)] := Chr(i);
  // теперь заменим например английскую раскладку на русскую
  // ее лучше загружать из файла, но думаю ты это и так сделаешь, пока что идея
  delta := Ord('А') - Ord('A'); // первое A - здесь обязательно русское, а второе англ!!
  for i := Ord('A') to Ord('Z') do // а здесь А - англ. заменяем заглавные англ буквы
    cs[Chr(i)] := Chr(i + delta);
  //  и так же само для прописных буков
  delta := Ord('а') - Ord('a'); // опять же первое а русское, второе англ
  for i := Ord('a') to Ord('z') do
    cs[Chr(i)] := Chr(i + delta);
  Reult := cs;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CharMap := GetCharMap;

end;

// обработка ввода символа некоего  TControl
//
// не знаю, чем ты это будешь реализовывать, да и нечего посоветовать, но схематично
//
// предполагаем, что вводимый символ попадает в процедуру обработки CharInput,
// где по нашему желанию может быть подменен другим
//
procedure TControlOnCharInput(var CurrChar: Char);
begin
  CurrChar := CharMap[CurrChar]; // здесь вся фича трансляции (замены) символов

end;

end.


насчет процедуры перехвата символов и самой таблицы это конечно же можно назвать бредом, но главное что я хочу сказать
Код

  CurrChar := CharMap[CurrChar]

PM MAIL   Вверх
amsoft
Дата 2.12.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



Hexel, зачем "велосипед"?
есть же таблица кодов, в которой 
A..Z = 65..90
a..z = 97..112
А..Я = 192..223
а..я = 224..255

Исходя из этого:

перевод Англ > Рус
Код

CurrChar := Chr(Ord(CurrChar) + 127);


перевод Рус > Англ
Код

CurrChar := Chr(Ord(CurrChar) - 127);

--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1014 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.