Discussion:
[Lazarus] LazUtf16.IsUTF16CharValid ok?
AlexeyT via Lazarus
2018-04-09 16:44:10 UTC
Permalink
function IsUTF16CharValid(AChar, ANextChar: WideChar): Boolean;
begin
  if AChar = #0 then Exit(False);
  Result := ((AChar >= #$D800) and (AChar <= #$DBFF)) and not
((ANextChar >= #$DC00) and (ANextChar <= #$DFFF));
  //Result := (Word(AChar) in [$D800..$DBFF]) and not (Word(ANextChar)
in [$DC00..$DFFF]); <= generates range check error
  Result := not Result;
end;

maybe better if func also gives True for chars <$D800.
--
Regards,
Alexey

--
Loading...