SA0175: 文字列に対する不審な操作
注記
このルールを常に有効にしないでください。 UTF-8 エンコーディングに変換するときにチェックする必要があるコード内の場所を見つけるために必要な場合にのみ、ルールを有効にします。
プロジェクトオプションかどうかをチェックします STRING の UTF-8 エンコーディング 有効にすることができます。これは、疑わしい操作を含むコードの場所が見つからない場合です。
UTF-8 エンコーディングに切り替えると、最初の 127 文字が ASCII エンコーディングに対応します。ただし、他のすべての文字は複数のバイトでエンコードされます。これにより、文字列を処理する際の動作が変化する可能性があります。その結果、ASCII 以外の文字を含む文字列リテラルは長くなる可能性があります。または、インデックスによる文字列へのアクセスは、間違った要素にアクセスする可能性があります。最後に、無効なバイト オフセットへのアクセスも発生する可能性があります。
ルールがアクティブな場合、次の構成のいずれかを含むすべてのコードの場所が報告されます。
バイト文字列へのインデックス アクセス
例:
str[2]
メッセージ: SA0175: 属性 'strict' の列挙: 文字列に対する不審な操作: インデックス アクセス '<式>'
半角文字列へのアドレスアクセス
例:
ADR(str)
メッセージ:
SA0175:属性 'strict' の列挙: 文字列に対する不審な操作: インデックス アクセス '<式>' の可能性があります
の文字列関数の呼び出し
Standard
ライブラリ、呼び出し時を除くCONCAT
とLEN
機能メッセージ:
SA0175:属性 'strict' の列挙: 文字列に対する不審な操作: インデックス アクセス '<式>' の可能性があります
非 ASCII 文字を含むバイト リテラル
例:
str := '99€'; str :='Ä';
メッセージ:
SA0175: 文字列に対する不審な操作: リテラル '<literal>' に非 ASCII 文字が含まれています