CharNext 與 CharPrev 是 WinAPI 提供的字符級導航函數,能正確處理雙字節字符集(DBCS)與 Unicode 字符,避免簡單指針算術導致的字符截斷錯誤。
procedure TForm1.Button1Click(Sender: TObject);
var p: PChar;
begin
p := '2009';
p := CharNext(p); ShowMessage(p); {009 - 跳過 '2'}
p := '博客';
p := CharNext(p); ShowMessage(p); {客 - 正確跳過雙字節字符 '博'}
end;
procedure TForm1.Button2Click(Sender: TObject);
var p, px: PChar;
begin
p := '2009';
px := CharNext(p); {指向 '0'}
px := CharNext(px); {指向 '0' 第二個}
ShowMessage(px); {09}
px := CharPrev(p, px); {回退一個}
px := CharPrev(p, px); {回退到開頭}
ShowMessage(px); {2009}
end;
關鍵點: CharPrev 需要傳入緩衝區起始指針作為邊界檢查,確保不會越界回退。