lstrlen 返回以空字符結尾的字符串長度(不含結束符)。lstrlenA 按字節計,lstrlenW 按字符(WideChar)計,導致中英文混合串結果不同。
procedure TForm1.Button1Click(Sender: TObject);
var p: PChar; buf: array[0..255] of Char; n1, n2: Integer;
begin
p := 'Delphi'; buf := 'Delphi';
n1 := lstrlen(p); n2 := lstrlen(buf);
ShowMessageFmt('%d,%d', [n1, n2]); {6,6}
end;
procedure TForm1.Button2Click(Sender: TObject);
var n1, n2: Integer;
begin
n1 := lstrlenA('萬一的 Delphi 博客'); {按字節:18}
n2 := lstrlenW('萬一的 Delphi 博客'); {按字符:13}
ShowMessageFmt('%d,%d', [n1, n2]); {18,13}
end;
解釋: "萬一的 Delphi 博客" 含 5 個中文字符(各 2 字節)+ 8 個 ASCII 字符(含空格),lstrlenA 計 5×2+8=18 字節,lstrlenW 計 5+8=13 字符。