Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Преобразование строки S в набор её чисел, где каждое число представляет каждый символ строки

Delphi , Синтаксис , Текст и Строки



Автор: VID
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование строки S в набор её чисел,
где каждое число представляет каждый символ строки

Получив строку S функция преобразует её в набор чисел, каждое из которых
обозначает код текущего символа, а перед каждым числом располагается символ "#".
Пусть, например, S = 'Hello';
Тогда Result = '#72#101#108#108#111';

Зависимости: system
Автор:       VID, vidsnap@mail.ru, ICQ:132234868, Махачкала
Copyright:   VID
Дата:        25 апреля 2002 г.
***************************************************** }

function StrToAscii(S: string): string;
var
  I, X: Integer;
  RS: string;
  CurChar: string;
begin
  Result := '';
  if Length(S) = 0 then
    Exit;
  X := 1;
  for I := 1 to Length(S) do
  begin
    CurChar := '#' + Inttostr(Ord(S[I]));
    Insert(CurChar, RS, X);
    X := X + Length(CurChar);
  end;
  Result := RS;
end;
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование набора чисел, предопределённых символом "#" в строку

Функция преобразует набор чисел, предопределённых символом "#" в
соответствующую строку. Каждое число в наборе чисел должно представлять из
себя код символа по ASCII таблице.
Например, если AsciiString '#72#101#108#108#111', то Result = 'Hello';

Зависимости: sysutils, system
Автор:       VID, vidsnap@mail.ru, ICQ:132234868, Махачкала
Copyright:   VID
Дата:        26 апреля 2002 г.
***************************************************** }

function ASCIIToStr(AsciiString: string): string;
var
  I, X, L, Lastpos: Integer;
  CurDIGChar, CurrAddChar, RS: string;
begin
  RESULT := '';
  L := Length(AsciiString);
  if L = 0 then
    Exit;
  X := 0;
  LASTPOS := 1;
  repeat
    I := X;
    CurDIGChar := '';
    repeat
      I := I + 1;
      if AsciiString[I] <> '#' then
        CurDIGChar := CurDIGChar + AsciiString[I];
    until (AsciiString[I] = '#') or (i = l);
    X := I;
    if CurDIGChar <> '' then
    begin
      try
        CurrAddChar := CHR(STRTOINT(CurDIGChar));
      except CurrAddChar := '';
      end;
      Insert(CurrAddChar, RS, lastpos);
      LastPos := LastPos + Length(CurrAddChar);
    end;
  until (X >= L) or (I >= L);
  Result := RS;
end;

Пример использования:

var
  X, Z: string;
begin
  Z := StrToAscii('Hello');
  // Z будет содержать '#72#101#108#108#111'

  X := AsciiToStr(Z);
  //В результате X будет содержать слово Hello
end;

Программное задание на языке Delphi!

Код содержит два функционала: StrToAscii и ASCIIToStr. Первая функция конвертирует строку в строку, кодированную в ASCII, где каждый символ заменяется на соответствующий ему код ASCII. Вторая функция делает обратное преобразование.

Вот подробный анализ каждой функции:

StrToAscii

  1. Инициализируйте пустую строку результата.
  2. Проверьте, является ли входная строка S пустой. Если да, то выйдите из функции.
  3. Переберите каждый символ в входной строке с помощью цикла for.
  4. Для каждого символа создайте новую строку, конкатенируя символ # с его кодом ASCII (используя IntToStr и Ord). Это создает формат, похожий на #72#101#108....
  5. Вставьте эту новую строку в результатную строку на текущей позиции (X).
  6. Обновите X, чтобы он указывал на конец вставленной строки.
  7. Повторяйте шаги 3-6 для каждого символа в входной строке.
  8. Возвращает результатную ASCII-кодированную строку.

ASCIIToStr

  1. Инициализируйте пустую результатную строку и некоторые переменные: I, X, L, LastPos.
  2. Проверьте, является ли входная строка AsciiString пустой. Если да, то выйдите из функции.
  3. Переберите каждый символ в входной строке с помощью цикла repeat.
  4. Найдите следующий код ASCII, ищя символ #. Когда найден, извлеките код как строку (CurDIGChar).
  5. Преобразуйте извлеченный код в целое число с помощью StrToInt, а затем преобразуйте его обратно в символ с помощью Chr.
  6. Вставьте этот преобразованный символ в результатную строку на текущей позиции (LastPos).
  7. Обновите LastPos, чтобы он указывал на конец вставленного символа.
  8. Повторяйте шаги 3-7, пока не будет обработано все входное содержимое или не произойдет ошибка (например, неправильный код).
  9. Возвращает результатную декодированную строку.

Пример использования

Код предоставляет простой пример, демонстрирующий использование этих двух функций:

var
  X, Z: string;
begin
  Z := StrToAscii('Hello'); // Z будет содержать '#72#101#108#108#111'
  X := ASCIIToStr(Z); // Результатирующая X будет 'Hello'
end.

В целом, эти функции предоставляют удобный способ конвертирования между строками и ASCII-кодированными строками в Delphi. Функция StrToAscii кодирует каждый символ как его соответствующий код ASCII, а функция ASCIIToStr декодирует эти коды обратно в символы.

Преобразование строки S в набор её чисел, где каждое число представляет каждый символ строки, а символ '#' располагается перед каждым числом.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 05:50:10/0.0075650215148926/1