DelFusa Blog 総本山

プログラミングの話題とかです。

NEW | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

Delphiでusingを作ってみました。

FacebookのDelphiTalksで話したのですが、
DreamHiveの山本さんが、
Delphi Prism(現在はOxygen)で使える using が Delphi でも使えるようになってほしい

とのことだそうだったので

Delphi Prism の構文では using が使えるらしい | ゆめとちぼーとげんじつと
http://dhive.jp/blog/yama/1046.html


無理無理なやり方で、実装してみました。

まあ、自分はusingがあんまりよくわかってないのですが、

usingに値をいれる形でfunction戻り値にオブジェクティブをいれると
動作し終われば、破棄されます。

我ながら、、、、、すばらしい、、、とは思えないような
微妙すぎる書きにくい構文ですけれども、とりあえず、どーぞ。


-----------------
  interface
  type
   using<TResult: class> = class
   private
    class procedure SetInstance(const Value: TFunc<TResult>); static;
   public
    class property instance: TFunc<TResult> write SetInstance;
   end;

  implementation

  { using<TResult> }

  class procedure using<TResult>.SetInstance(const Value: TFunc<TResult>);
  begin
   Value.Free;
  end;

-----------------
  procedure TForm1.Button7Click(Sender: TObject);
  var
   s: String;
  begin
   s := 'TEST';
   using<TStringList>.instance := function: TStringList
   var
    a, b: string;
   begin
    Result := TStringList.Create;
    a := 'A';
    b := 'B';
    Result.Add(a);
    Result.Add(b);
    ShowMessage(Result.Text);
    Check('TESTA'#13#10'B'#13#10, s + Result.Text);
   end;
  end;
-----------------
メッセージは
----------
  A
  B
----------
と表示されます。

マルチスレッドには....対応できるのかな。。。

よくわかんないですが、とりあえず。
スポンサーサイト

| 未分類 | 21:57 | comments:0 | trackbacks(-) | TOP↑

COMMENT















非公開コメント

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。