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

--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to