например
Код |
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]
|
|