Страдалецъ, так будет эффективнее:
Код:
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 уже найден в самом начале. Я, конечно, понимаю, что здесь это не критично, но это уж так — для наведения марафета... =)