ホーム >プログラム >Delphi 6 ローテクTips

メモ・関数内関数

関数内関数の覚書。

procedure TForm1.Button1Click(Sender: TObject);
var
  li_Height : Integer;
  procedure lpc_Inc;
  begin
    Inc(li_Height);
  end;
begin
  li_Height := 0; //li_Heightは0
  lpc_Inc;        //li_Heightは1
  lpc_Inc;        //li_Heightは2
  li_Height := 0; //li_Heightは0
  lpc_Inc;        //liHeightは1
end;

関数内関数では先に宣言されている親(あるいは祖先)の変数を使用可能。


関数内関数をEnumWindows等の引数に渡すことも可能。
ただしその場合関数内関数でクラス変数にアクセスすると例外が発生。
もしかしたら偶然使えているだけで本来NGなのかもしれない。

ちなみにコールバック関数にはコンパイル時にエラーになるので使用不可。


2011-05-04: