CharUpper 根據參數類型表現不同:傳入字符指針返回轉換後字符指針;傳入字符串緩衝區指針就地轉換並返回同一指針。需配合類型轉換使用。
procedure TForm1.Button1Click(Sender: TObject); {單字符變量}
var C: Char;
begin C := 'a'; C := Char(CharUpper(PChar(C))); ShowMessage(C); end; {A}
procedure TForm1.Button2Click(Sender: TObject); {字符常量}
var C: Char;
begin C := Char(CharUpper(PChar('a'))); ShowMessage(C); end; {A}
procedure TForm1.Button3Click(Sender: TObject); {字符數組}
var Arr: array[0..2+1] of Char;
begin Arr := 'abc'; CharUpper(Arr); ShowMessage(Arr); end; {ABC}
procedure TForm1.Button4Click(Sender: TObject); {AnsiString}
var str: string;
begin str := 'abc'; CharUpper(@str[1]); ShowMessage(str); end; {ABC}
procedure TForm1.Button5Click(Sender: TObject); {對比 Delphi 原生函數}
var c: Char; str: string;
begin c := 'a'; c := UpCase(c); str := 'abc'; str := UpperCase(str); ShowMessageFmt('%s, %s', [c, str]); end; {A, ABC}
關鍵點: 單字符需 PChar() 轉換後再 Char() 取回;字符數組/字符串直接傳入地址就地修改。Delphi 原生 UpCase/UpperCase 更簡潔且支援 Unicode。