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

Delphi培訓第三天學習筆記

  --位運算子:and、or、xor、not
  shl(); --二進位制左移,相當於*2
  shr(); --二進位制右移,相當於div 2

delphi中的函式和過程呼叫都是按就近原則,

  比如有一個公共函式fun()和一個物件裡的函式TObject.fun(),
  呼叫fun()函式的公共過程PubilcProc()和TObject.Proc()。
  publicProc()中呼叫的就是公共函式fun(),而TOject.Proc()呼叫的就是自己物件內部的Tobject.fun()。

var與out宣告的引數都是引用傳遞,但out宣告的引數只能用於輸出。
const宣告的引數不允許被改變,因此編譯器能優化常參的傳遞,能提高執行效率。
預設引數:在引數宣告時為該引數賦值。

使用原則:
  1,如果你省略了一個預設引數,那麼你也要省略這個引數後面的所有引數
  2,不能跳過預設引數,直接輸入預設引數後面的引數
  3,預設引數全部放在引數列表的最後,能避免上面兩種情況
  4,預設引數必須是常量
  5,預設引數必須是值傳遞或常參函式,不能是var宣告的引用引數
  6,不建議同時使用預設引數和過載,很容易發生RuntimeError(系統會找到多個合適的過載函式)

開發陣列引數:陣列的型別已確定,但元素個數未知。例: const array of Integer
型別變化的開放陣列引數:陣列的型別和大小都不確定,元素型別由元素的Vtype屬性來判斷。

  procedure proc1(const arr: array of const);
  var
    i: Integer;
  begin
    
    for i = low(arr) to high(arr)
    begin
      case arr[i].VType of
        vtString:....;
        vtInteger:.....
    end;
  end;

raise Exception.Create('');和Exit;的區別:Exit只是終止所在函式的執行,而raise exception丟擲了異常,會終止所在函式及呼叫該函式的物件的執行。

Delphi中的函式過載:在函式聲明後新增Overload關鍵字,並保證與其重名的函式的引數個數、型別不同。那麼系統會自動根據傳入引數的個數、型別選擇最匹配的過載函式。