Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#32

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 25. Jul 2019, 10:36
So, ich möchte dann bitte auch nochmal (nur so wegen der Vielfalt):
Delphi-Quellcode:
uses
  System.SysUtils,
  System.Classes;

function DecodeCStyleString(const AStr: String): String;
const
  cLeadIn: TBytes = [$5C, $78]; // '\x'
var
  cnt: Integer;
  source: TBytes;
  target: TBytes;
  i: Integer;
begin
  source := TEncoding.UTF8.GetBytes(AStr);
  SetLength(target, Length(source)); // ausreichend Platz schaffen
  cnt := 0;
  i := 0;
  while (i < Length(source)) do
  begin
    if ((i + 3) < Length(source)) and
       CompareMem(@source[I], @cLeadIn[0], 2) and
       (HexToBin(source, I + 2, target, cnt, 1) = 1) then
    begin
      Inc(cnt);
      Inc(i, 4);
      Continue;
    end;
    target[cnt] := source[i];
    inc(cnt);
    Inc(i);
  end;
  Result := TEncoding.UTF8.GetString(target, 0, cnt);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming

Geändert von Uwe Raabe (25. Jul 2019 um 10:59 Uhr) Grund: code fix
  Mit Zitat antworten Zitat