Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Vorstellung Unit: File encoding detector

  Alt 19. Nov 2017, 21:53
Vom Ansatz her gut aber du prüfst nicht, ob eine Multibyte-Sequenz vorzeitig abgebrochen wird.
Gut erkannt
Ist mir dann auch noch so in den Sinn gekommen. Ich würde das dann aber doch etwas kompakter schreiben:
Delphi-Quellcode:
function IsUTF8(Bytes: TBytes): Boolean;
var
  B: Byte;
  weitere: 0..3;
begin
  weitere := 0;
  for B in Bytes do begin
    if weitere > 0 then begin
      if not (B in [$80..$BF]) then Exit(False);
      Dec(weitere);
    end
    else begin
      case B of
        $00..$7F: ; { ASCII }
        $C2..$DF: weitere := 1;
        $E0..$EF: weitere := 2;
        $F0..$F4: weitere := 3;
      else
        Exit(False);
      end;
    end;
  end;
  Result := True;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat