Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Оператор IN и Unicode Delphi XE10  (Прочитано 5737 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shouldercannon
Помогающий

ru
Offline Offline

« : 21-08-2016 06:13 » 

Есть функция, собирающая URL, перебирая каждый символ
Код: (Delphi)
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;
Есть один нюанс, напрочь отказывается распознавать кириллицу в верхнем регистре в промежутке от А до Р. Помогите, пожалуйста, решить проблему.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 21-08-2016 06:57 » 

переведи всё в нижний регистр, как вариант.
Записан

Shouldercannon
Помогающий

ru
Offline Offline

« Ответ #2 : 21-08-2016 10:24 » new

Код: (Delphi)
function GetUrl(txt: String): String;
const
  Simbols  = '!"#$%&''()*+,-./:;<=>?@[]^_`{|}~0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
var
  I: Integer;
  Passed: Boolean;
begin
  Result := '';

  for I := 1 to Length(txt) do
  begin
    Passed := False;
    if not Passed then if Simbols .Contains(txt[I]) then Passed := True;
    if Passed then Result := Result + txt[I] else Break;
  end;
end;
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines