Относительно последнего вопроса... Rus2Lat можно сделать и так:
	Код:
	unit Unit1;
interface
uses
  SysUtils,Forms,Dialogs,StdCtrls,Controls,Classes;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
function rus2lat(data:string):string;
var a: array [1..30] of string;
    i,L,j,k:byte;
    Rus,Lat,sout:string;
begin
    sout:='';
    L:=Length(data);
    Rus:='абвгдежзиклмнопрстуфхю';  //собственно эти строки и служат 
    Lat:='abvgdegziklmnoprstyfhu';       //для перевода RUS символов в ENG 
    for i:=1 to L do
    begin
     for j:=1 to 23 do
         if data[i]=Rus[j] then a[i]:=Lat[j]
         else
         if AnsiLowerCase(data[i])=Rus[j] then a[i]:=AnsiUpperCase(Lat[j]);
    end;
    for k:=1 to L do sout:=sout+a[k];
    Rus2Lat:=sout;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
     label1.Caption:=rus2lat(Edit1.Text);
end;
end.
 На форму бросаем TEdit, TLabel и TButton...  проверил, работает...хотя строковые переменные Rus и Lat скорей всего надо будет переписать. Эти только для примера.