Delphi で 「W1050 set 式で WideChar がバイト char に縮小されました。'SysUtils' ユニットの 'CharInSet' 関数で使用することを検討してください。」 なる警告 こういった関数を作成すると出現するエラー function CharInSetEx(C: WideChar; CharSet: TSysCharSet): Boolean; begin Result := C in CharSet; // Result := System.SysUtils.CharInSet(C, CharSet); end; CharInSetEx('あ', ['あ', 'A']) CharInSet とか関係なく、この関数に入った時点で 配列 CharSet の値が 0-255 に丸められてしまうため、 ASCII以外の文字列を 変数CharSetへ与えてもヒットしない これは TSysCharSet の定義(set of AnsiChar)である、集合型が0-255の範囲しか利用できないことに由来しています この場合 array of WideChar を使用して同様の引数で WideChar の処理を行うことが可能です(サロゲートペア除く) ただし、CharSet: array of WideChar = ['A'] のようなデフォルト引数を利用することは不可能になります(overloadで同様の事が可能な場合があります) function CharInSetEx(C: WideChar; CharSet: array of WideChar): Boolean; begin Result := System.WideStrUtils.InOpArray(C, CharSet); end; CharInSetEx('あ', ['あ', 'A'])