Delphi 字串作為動態陣列實作,支援 Low/High 邊界查詢,但型別與變數的行為有細微差別。
procedure TForm1.FormCreate(Sender: TObject);
var str: string; n1, n2, n3: Integer;
begin
str := 'ABC';
n1 := Low(string); { 1 - 型別下界,字串 1-based }
n2 := Low(str); { 1 - 變數下界,同型別 }
n3 := High(str); { 3 - 變數上界,長度為 3 }
{ ShowMessageFmt('%d, %d, %d', [n1, n2, n3]); }
end;
Low 永遠為 1,High 等於字串長度Low(string) = Low(str) = 1High(str) 回傳實際長度,空字串時為 0function SafeCharAt(const S: string; Index: Integer): Char;
begin
if (Index >= Low(S)) and (Index <= High(S)) then
Result := S[Index]
else
Result := #0;
end;
理解此特性對編寫安全的字串遍歷、邊界檢查程式碼至關重要。