function TranslitRus2Lat(const Str: String): String; const RArrayL = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя'; RArrayU = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ'; colChar = 33; arr: array[1..2, 1..ColChar] of String = (('a','b','v','g','d','e','yo','zh','z','i','y', 'k','l','m','n','o','p','r','s','t','u','f', 'kh','ts','ch','sh','shch','''','y','''','e','yu','ya'), ('A','B','V','G','D','E','Yo','Zh','Z','I','Y', 'K','L','M','N','O','P','R','S','T','U','F', 'Kh','Ts','Ch','Sh','Shch','''','Y','''','E','Yu','Ya')); var i: Integer; LenS: Integer; p: Integer; d: Byte; begin result := ''; LenS := length(str); for i := 1 to lenS do begin d := 1; p := pos(str[i], RArrayL); if (p = 0) then begin p := pos(str[i], RArrayU); d := 2 end; if (p<>0) then result := result + arr[d, p] //если не русская буква, то берем исходную else result := result + str[i]; end; end;