Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

2010-01-01から1ヶ月間の記事一覧

TStringListのささやかな新機能。

エターナルフォースOwnsObjects*1! type TStringList = class(TStrings) ... constructor Create(OwnsObjects: Boolean); overload; ... end; Create時にTrueを指定しておくと、Freeをしたその一瞬でObjectsプロパティに含まれるインスタンスを解放させる*2…

準公式(?)イベントハンドラを無名メソッドで書く方法。

Entropy Overload: Using anonymous methods in method pointers リンク先の記事でやってることは前書いたのとほぼ同じなんだけど、そこはかとなくあちらの方が華麗なコードぽくて悔しいです>< ただ、参照カウントの問題も同じく解決されてなかったので、…

プロパティのオーバーロード。

本来同名で複数定義することのできないプロパティを、default指定した場合に限りオーバーロードできちゃう、という小ネタ。 type TFoo = class private function GetItem(Index: Integer): string; overload; function GetItem(const Name: string): string;…

呼び出し規約を指定して無名メソッドを書く。

var func: TFunc<Integer,BOOL>; begin func := // NG function(Data: Integer): BOOL stdcall begin Result := True; end; このように書こうとすると、コンパイラに「互換性ねーよ糞が」とか怒られるんだけど、そもそもTFunc<>の宣言を見てみると、 type TFunc<T,TResult> = referenc</t,tresult></integer,bool>…

イベントハンドラを無名メソッドで書く。

2ヶ月ちょっとくらい放置だったのはこの際忘れるとして。C#では次のように無名のイベントハンドラを記述できるので、 wahaa.Click += delegate { MessageBox.Show("わはー"); }; Delphiに無名メソッドが実装された時、きっとできるんだろうと甘く考えてたら…