Есть функция, собирающая URL, перебирая каждый символ
function GetUrl(txt: String): String;
var
  I: Integer;
  Passed: Boolean;
begin
  Result := '';
  for I := 1 to Length(txt) do
  begin
    Passed := False;
    if not Passed then if (AnsiChar(txt[I]) in ['!', '"', '#', '$', '%', '&', '''', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '^', '_', '`', '{', '|', '}', '~']) then Passed := True;
    if not Passed then if (AnsiChar(txt[I]) in ['0'..'9', 'a'..'z', 'A'..'Z', 'а'..'я', 'А'..'Я']) then Passed := True;
    if Passed then Result := Result + txt[I] else Break;
  end;
end;
procedure TForm5.Button1Click(Sender: TObject);
var
  s: String;
begin
  s := 'АБВГДЕЁЗЖИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  Edit1.Text := GetUrl(s);
end;
Есть один нюанс, напрочь отказывается распознавать кириллицу в верхнем регистре в промежутке от 
А до 
Р. Помогите, пожалуйста, решить проблему.