文字列型キャストミスの簡易解消方法
- PCharとPAnsiChar
- array of Charとarray of AnsiChar
上記のようなnull終端文字列のキャストの仕方を間違えると文字化けが発生し正しい参照が出来なる。 これを簡易的に見つける方法
エラー
W1044 %s から %s への型キャストは間違っている可能性があります
Warning
警告止まりだけど、実行時に文字化けがほとんど発生する。
対策
- プロジェクトオプションの
ヒントと警告から型キャストが間違っている可能性がありますをエラーに変更する。 - ビルドメッセージを保存して検索して、
W1044で検索。該当箇所を修正する。
Caution
StrPCopy(@asLcAnsiChar[0]¸ sLcStr);
のように、先頭アドレスを参照している時は警告が出ないので別途注意が必要
対策
StringからPAnsiChar
var
sLcStr: String;
begin
PAnsiChar( AnsiString( sLcStr ) );
end;
