1. 程式人生 > 其它 >Delphi培訓第四天學習筆記

Delphi培訓第四天學習筆記

能定義成區域性變數的不要定義成全域性變數

定義 自動初始化 存放位置 效率 作用域
區域性變數 定義在函式或過程中的變數 棧中 讀寫速度快 方法體內
全域性變數 定義在函式或過程外的變數 堆中 較慢 實現段:定義在implementation下面,作用於定義語句之後的整個實現段
整個程式:定義在Implementation上面,作用範圍最大,能作用於引用該單元的其它單元中

引用其它單元:關鍵字--use + 單元名
use只能緊跟在Interface關鍵字或Implementation關鍵字後,否則會報錯。
一般放在Implementation後

Delphi中Integer的範圍是 -232

~ 232 - 1; Extended的範圍是 3.6 * 10-4951 ~ 1.1 * 104932
所以可以考慮用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個字元