識別符(變數、常數、型別、程序等)的作用域定義其可被存取的程式區域。最小宣告模組外的程式碼無法存取該識別符,只有重新進入宣告模組才能訪問。這構成了區域變數的基礎特性:離開模組後,變數即從記憶體釋放。
若需在當前單元存取其他單元的識別符,需在 uses 子句引入目標單元,並以 單元名.識別符 形式呼叫,例如 Unit1.CalculateInterest(...)。此機制確保模組封裝性,防止命名空間污染。
編譯器自動綁定「最接近當前作用域」的識別符。開發者可在不同層級宣告同名識別符,內層宣告會遮蔽外層同名項目。
單元層級的全域變數通常置於 implementation 後的 var 區段。為確保邏輯正確(如按鈕點擊計數器),需在單元結尾的 initialization 區段進行初始化:
implementation
var
Count: Integer;
initialization
Count := 0;
面向物件寫法可將此類狀態封裝為表單欄位(field),詳見後續章節。
將重複邏輯抽離為獨立程序/函數,優點:程式碼複用、結構清晰、維護容易。函數以 function 開頭並指定回傳型別;程序以 procedure 開頭。參數列表用分號分隔,同型別參數可合併:procedure ValidateDate(Day, Month, Year: Integer);
function NoValue(AnEditBox: TEdit): Boolean;
begin
if AnEditBox.Text = '' then
begin
AnEditBox.Color := clRed;
AnEditBox.Text := '請輸入整數值';
Result := True;
end
else
begin
AnEditBox.Color := clWindow;
Result := False;
end;
end;
事件處理程序中調用:if NoValue(Edit1) or NoValue(Edit2) then Exit; 實現防呆邏輯。
程序/函數內可宣告區域型別(type)、變數(var)、常數(const)。慣例順序:型別 → 變數 → 常數,但只要位於標題之後、執行碼之前即合法。型別名稱慣用 T 開頭(如 TPrimaryColor),便於識別。