ホーム >プログラム >Delphi 6 ローテクTips

Windows APIメモ lstrcpyn lstrcpynW

Windows APIのメモ。
lstrcpyn lstrcpynW。

function lstrcpyn(lpString1, lpString2: PChar; iMaxLength: Integer): PChar; stdcall;
function lstrcpynW(lpString1, lpString2: PWideChar; iMaxLength: Integer): PWideChar; stdcall;

iMaxLengthはプラットフォーム SDKによると

iMaxLength
lpString2 パラメータが指す文字列から、lpString1 パラメータが指すバッファへコピーするべき文字の数を TCHAR 単位で指定します。終端の NULL 文字分も含めてください

となっています。
終端のNULL文字も含めてとなっているので、

  lstrcpyn(lp_Buff, PAnsiChar(ls_Str), Length(ls_Str) +1);

のようにコピーする文字数 +1(終端のNULL分)としなければなりません。

単純に、

  lstrcpyn(lp_Buff, PAnsiChar(ls_Str), Length(ls_Str));

のようにしてしまうと最後の一文字が欠けます。