Показать сообщение отдельно
  #12  
Старый 01.04.2009, 09:04
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Страдалецъ, так будет эффективнее:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
  Lat = '~@#$^&QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?`qwertyuiop[]asdfghjkl;''\zxcvbnm,./';
  Cyr = 'Ё"№;:?ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,ёйцукенгшщзхъфывапролджэ\ячсмитьбю.';
var
  i: Integer;
begin
  i := Pos(Key, Lat);
  if i <> 0 then Key := Cyr[i];
end;
Во-первых, потому, что функция Pos написана на assembler; во-вторых, в ней цикл не будет обходить всю строку, если символ Key уже найден в самом начале. Я, конечно, понимаю, что здесь это не критично, но это уж так — для наведения марафета... =)
Ответить с цитированием