Delphi W1050 set 式で WideChar がバイト char に縮小されました
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'])
これは 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'])
コメント