Skip to content

文字列型キャストミスの簡易解消方法

  • PCharとPAnsiChar
  • array of Charとarray of AnsiChar

上記のようなnull終端文字列のキャストの仕方を間違えると文字化けが発生し正しい参照が出来なる。 これを簡易的に見つける方法

エラー

W1044 %s から %s への型キャストは間違っている可能性があります

Warning

警告止まりだけど、実行時に文字化けがほとんど発生する。

対策

  1. プロジェクトオプションのヒントと警告から型キャストが間違っている可能性がありますエラーに変更する。
  2. ビルドメッセージを保存して検索して、W1044で検索。該当箇所を修正する。

1749197380.png

Caution

StrPCopy(@asLcAnsiChar[0]¸ sLcStr); のように、先頭アドレスを参照している時は警告が出ないので別途注意が必要

対策

StringからPAnsiChar

var 
    sLcStr: String;
begin   
    PAnsiChar( AnsiString( sLcStr ) );
end;

AnsiStringからPWideChar

関連

Unicode版Delphiにおける文字列処理の扱い