Оператор IN и Unicode Delphi XE10

Тема в разделе "Delphi - Компоненты", создана пользователем Shouldercannon, 21 авг 2016.

  1. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Есть функция, собирающая 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;
    Есть один нюанс, напрочь отказывается распознавать кириллицу в верхнем регистре в промежутке от А до Р. Помогите, пожалуйста, решить проблему.

    Решено
    Код (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 Shouldercannon, 21 авг 2016
    Последнее редактирование: 21 авг 2016
Загрузка...

Поделиться этой страницей