Показать сообщение отдельно
  #3  
Старый 24.10.2013, 04:54
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Эх, пердюмонокль какой, усложнять, так усложнять можно ещё G-кодом (здесь на весь латинский алфавит в кверти формате, уберите лишние знаки)
Код:
 function zn(ds: byte): char;
 const
  scn: array[0..1] of array [0..25] of byte =
  ((81, 87, 69, 82, 84, 89, 85, 73, 79, 80, 65, 83, 68,
    70, 71, 72, 74, 75, 76, 90, 88, 67, 86, 66, 78, 77 ),
  (201,214,211,202,197,205,195,216,217,199,212,219,194,
   192,207,208,206,203,196,223,215,209,204,200,210,220));
 var
 i: integer;
 begin
   Result:= char(ds);
   for i := 0 to 25 do
    if (ds = scn[0, i])      or
       (ds = scn[0, i] + 32) or
       (ds = scn[1, i])      or
       (ds = scn[1, i] + 32) then
         begin
          Result:= char(scn[0, i]);
          Exit;
         end;
end;
использование
Код:
...
if zn(Byte(Key)) in ['G'{,'A','R','B','','','',''}] then
  with edtCurFrame do
   begin
    s:= Text;
    if Length(s) > 0 then 
      s[1]:= zn(Byte(Key))
     else 
      s:=    zn(Byte(Key));
    Key:= #0;
    Text:= s;
    SelLength:= 0;
    SelStart:= Length(Text);
   end;
...
из плюсов - на все нужные знаки будет такое одно.

З.Ы. Немного сократил букофф
Ответить с цитированием