> FillChar(LAnsiCharArr, Length(LAnsiCharArr), #0);
> Move(LAnsiString[1], LAnsiCharArr, Length(LAnsiString));
Move 関数によるコピーでは,コピー先が Char(AnsiChar) 型の静的配列の場合,
FilllChar で #0 (つまり Null 文字) で初期化しないと,
文字列の後ろに文字化けしたような「ゴミ」が付きます.
# 静的配列というのは,変数の定義の時に文字数やバイト数分のメモリ領域を
# 確保する配列のことです.
# 動的配列では SetLength でメモリを確保できます.
# PChar(PAnsiChar) の変数は AllocMem や StrAlloc でメモリ領域を確保します.
# コピー先のメモリ領域が確保されていない状態で Move 関数や StrPCopy 関数を
# 実行すると例外が発生します.
↑ 既に提示したコードで確認してください.
|