Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2020, 19:51   #1
Chaser_81
Пользователь
 
Регистрация: 09.04.2007
Сообщений: 37
Радость Перевести ASCII в String

Всем привет!

Есть строка в ASCII-код, пример:

Цитата:
& #1055;& #1083;& #1103;& #1078;& #1080; & #1074; & #1043;& #1077;& #1088;& #1094;& #1077;& #1075;-& #1053;& #1086;& #1074;& #1080;
Нужно перекодировать ее в читабельный вид.

Подскажите, есть ли готовые функции?

ПС. Поставил пробелы после & чтобы автоматом форум не перекодировал в норм текст.
SiteAnalyzer - анализ и аудит сайта. Telegram: @majento

Последний раз редактировалось Chaser_81; 22.02.2020 в 19:54.
Chaser_81 вне форума Ответить с цитированием
Старый 22.02.2020, 20:04   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от Chaser_81 Посмотреть сообщение
ASCII-код
Это не ASCII-код.

Цитата:
Сообщение от Chaser_81 Посмотреть сообщение
Нужно перекодировать ее в читабельный вид.
Поставил пробелы после & чтобы автоматом форум не перекодировал в норм текст.
А чем не решение?
Arigato вне форума Ответить с цитированием
Старый 22.02.2020, 20:28   #3
Chaser_81
Пользователь
 
Регистрация: 09.04.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Это не ASCII-код.

А чем не решение?
А что это за код?
Это какой-то псевдокод, но какой не могу понять.

Мне нужно для Delphi )
SiteAnalyzer - анализ и аудит сайта. Telegram: @majento
Chaser_81 вне форума Ответить с цитированием
Старый 22.02.2020, 20:36   #4
Chaser_81
Пользователь
 
Регистрация: 09.04.2007
Сообщений: 37
По умолчанию

Ага, это юникод
SiteAnalyzer - анализ и аудит сайта. Telegram: @majento
Chaser_81 вне форума Ответить с цитированием
Старый 22.02.2020, 20:40   #5
Chaser_81
Пользователь
 
Регистрация: 09.04.2007
Сообщений: 37
По умолчанию

Есть у кого-то готовые функции для перевода в кириллицу?
SiteAnalyzer - анализ и аудит сайта. Telegram: @majento
Chaser_81 вне форума Ответить с цитированием
Старый 22.02.2020, 23:23   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Самый простой вариант - создать 2 константных массива, один Юникод, второй - кир. Или даже один, используя код символа как индекс. Хотя впрочем, найти готовый вариант проще. Если найдётся.
А учесть, что вариантов кир. юникода - как блох на собаке (чувашский, абхазский, церковнославянский etc...) - mama mia!

Последний раз редактировалось digitalis; 22.02.2020 в 23:29.
digitalis вне форума Ответить с цитированием
Старый 23.02.2020, 11:29   #7
Chaser_81
Пользователь
 
Регистрация: 09.04.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Самый простой вариант - создать 2 константных массива, один Юникод, второй - кир. Или даже один, используя код символа как индекс. Хотя впрочем, найти готовый вариант проще. Если найдётся.
А учесть, что вариантов кир. юникода - как блох на собаке (чувашский, абхазский, церковнославянский etc...) - mama mia!
Да вот не хотелось бы изобретать велосипед, в том то и дело
SiteAnalyzer - анализ и аудит сайта. Telegram: @majento
Chaser_81 вне форума Ответить с цитированием
Старый 23.02.2020, 12:11   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Ну тогда успехов в поиске.
digitalis вне форума Ответить с цитированием
Старый 24.02.2020, 09:21   #9
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

Код:
function MyDecode(const AStr: AnsiString): WideString;
var
  Sp, Tp: PAnsiChar;
  Rp: PWideChar;
  S: AnsiString;
  I, Code: Integer;
begin
  SetLength(Result, Length(AStr));
  Sp := PChar(AStr);
  Rp := PWideChar(Result);
  while Sp^ <> #0 do
  begin
    if Sp^ = '&' then
    begin
      Inc(Sp);
      if Sp^ = '#' then
      begin
        Inc(Sp);
        Tp := Sp;
        while (Sp^ <> ';') and (Sp^ <> #0) do
          Inc(Sp);
        SetString(S, Tp, Sp - Tp);
        Val(S, I, Code);
        Rp^ := WideChar(I);
      end;
    end
    else
      Rp^ := WideChar(Sp^);
    Inc(Rp);
    Inc(Sp);
  end;
  SetLength(Result, Rp - PWideChar(Result));
end;

procedure TForm1.Button1Click(Sender: TObject);
const // убрать пробелы после &
  S = '& #1055;& #1083;& #1103;& #1078;& #1080; & #1074; & #1043;& #1077;' +
      '& #1088;& #1094;& #1077;& #1075;-& #1053;& #1086;& #1074;& #1080;';
begin
  ShowMessage(MyDecode(S));
end;

Последний раз редактировалось Filka; 24.02.2020 в 09:25.
Filka вне форума Ответить с цитированием
Старый 24.02.2020, 16:53   #10
Chaser_81
Пользователь
 
Регистрация: 09.04.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Filka Посмотреть сообщение
Код:
function MyDecode(const AStr: AnsiString): WideString;
var
  Sp, Tp: PAnsiChar;
  Rp: PWideChar;
  S: AnsiString;
  I, Code: Integer;
begin
  SetLength(Result, Length(AStr));
  Sp := PChar(AStr);
  Rp := PWideChar(Result);
  while Sp^ <> #0 do
  begin
    if Sp^ = '&' then
    begin
      Inc(Sp);
      if Sp^ = '#' then
      begin
        Inc(Sp);
        Tp := Sp;
        while (Sp^ <> ';') and (Sp^ <> #0) do
          Inc(Sp);
        SetString(S, Tp, Sp - Tp);
        Val(S, I, Code);
        Rp^ := WideChar(I);
      end;
    end
    else
      Rp^ := WideChar(Sp^);
    Inc(Rp);
    Inc(Sp);
  end;
  SetLength(Result, Rp - PWideChar(Result));
end;

procedure TForm1.Button1Click(Sender: TObject);
const // убрать пробелы после &
  S = '& #1055;& #1083;& #1103;& #1078;& #1080; & #1074; & #1043;& #1077;' +
      '& #1088;& #1094;& #1077;& #1075;-& #1053;& #1086;& #1074;& #1080;';
begin
  ShowMessage(MyDecode(S));
end;
Да, спасибо, уже на Стековерфлоу нашел решение. Немного другое, но тоже рабочеее
SiteAnalyzer - анализ и аудит сайта. Telegram: @majento
Chaser_81 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести string в int kostya67 Visual C++ 12 21.11.2014 15:35
c# перевод из ascii в string world12_tk Помощь студентам 1 22.02.2012 09:48
Перевести строку с ASCII (Dos) в Win PRsam Помощь студентам 4 09.02.2011 13:54
перевести из ASCII в HEX fize Помощь студентам 7 25.12.2009 15:35
Перевести Int в String Д'якон Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 26.11.2008 22:04