Delphi培訓第四天學習筆記
阿新 • • 發佈:2021-09-06
能定義成區域性變數的不要定義成全域性變數
定義 | 自動初始化 | 存放位置 | 效率 | 作用域 | |
---|---|---|---|---|---|
區域性變數 | 定義在函式或過程中的變數 | 否 | 棧中 | 讀寫速度快 | 方法體內 |
全域性變數 | 定義在函式或過程外的變數 | 是 | 堆中 | 較慢 | 實現段:定義在implementation下面,作用於定義語句之後的整個實現段 整個程式:定義在Implementation上面,作用範圍最大,能作用於引用該單元的其它單元中 |
引用其它單元:關鍵字--use + 單元名
use只能緊跟在Interface關鍵字或Implementation關鍵字後,否則會報錯。
一般放在Implementation後
Delphi中Integer的範圍是 -232
所以可以考慮用Extended型別接收Integer型別運算的結果
Exe檔案包含兩個部分,一部分是編譯後的程式指令,另一部分是程式執行所需的資源庫。
const定義的字串常量儲存需要編譯,而ResourceString定義的字串儲存在程式資源中,不需要編譯,由windows管理。
漢化一般就是漢化ResourseString宣告的字串
如果和UI或語言相關的字串,都用ResourceString宣告
Forward宣告:
過程型別:函數語言程式設計的關鍵,用於向一個方法中傳遞另一個方法
--例:根據引數計算兩個Integer的值 --定義過程型別 type coculateType = function(Value1, Value2:Integer):Integer; --定義了一個有兩個Integer引數並返回Integer結果的函式型別(感覺有點像類和例項的關係) --定義加法 function AddNum(Num1, Num2: Integer): Integer; begin Result := a + b; end; --定義乘法 function PlusNum(Num1, Num2: Integer): Integer; begin Result := a * b; end; --使用過程型別 function ProcTypeTest(Num1, Num2: Integer; ProcTest: coculateType):Integer; begin Result := ProcTest(Num1, Num2); end --用一個按鈕顯示結果 procedure TfrmDetail.btn1Click(Sender: TObject); var a, b: Integer; funcName: coculateType; begin funcName := AddNum; --函式名 a := 1; b := 2; ShowMessage(IntToStr(ProcTypeTest(a, b, funcName))); end;
now(); 獲取本地當前時間
每個物件實際上是一個隱含的指標,傳入方法時其實是傳入了自己的引用,所以在方法體內能改變物件的屬性
帶型別宣告的全域性陣列常量:
const
arr: array of string = ('asad', 'bsad', 'csa');
Xe4中Run按鈕主要分兩步:先編譯,再執行生成的EXE
編譯時會先判斷.pas檔案是否有改變,沒有改變的話不會編譯。
Delphi中常用的字串函式:
Copy(str: string, index, num: Integer): string; --從str的第index個字元開始,擷取num個字元; Length(str: string): Integer; --返回str的長度 Pos(sourceStr, TargetStr: string): Integer; --返回sourceStr中第一次出現TargetStr的開始位置,沒有找到則返回0(string下標從1開始) Delete(str, index, num); --從index開始,刪除str的num個字元