メモ・関数内関数
関数内関数の覚書。
-
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: