名前 題名 ▼ Konnoyaさん > いつもお世話になっております。 > 最近、便利すぎるヘルパーにハマっています(笑) > 何を今更…と言われるかも知れませんが、 > 案外この便利さを知らない方もいるかと思いまして投稿しました。 > > > 【Unit2】HogeIntヘルパーユニット > > unit Unit2; > > interface > > uses > System.SysUtils; > > type > // 別なInteger型を作る > HogeInt = type Integer; > > // 別なInteger型のメソッドを宣言する > HogeIntHelper = record Helper for HogeInt > public > // クリア > procedure Clear; overload; inline; > // インクリメント > function Inc : HogeInt; overload; inline; > end; > > implementation > > // HogeIntクリア > procedure HogeIntHelper.Clear; > > begin > // Selfは自分自身の実体です。 > Self := 0; > end; > > // インクリメント > function HogeIntHelper.Inc : HogeInt; > > begin > // functionのResultに渡してあげる事で、メソッドを連続して > // 記述できる様になります。 > // 例:HogeInt.Inc.Inc.Inc等 > Result := Self + 1; > end; > > end. > > 【Unit1】メインユニット ヘルパーを利用する側 > > unit Unit1; > > interface > > uses > System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, > FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, > FMX.StdCtrls, FMX.Controls.Presentation, > > Unit2; // ← HogeIntが定義されているユニット > > type > TForm1 = class( TForm ) > > Label1 : TLabel; > ClearButton : TButton; > IncButton : TButton; > > procedure FormCreate ( Sender : TObject ); > procedure ClearButtonClick( Sender : TObject ); > procedure IncButtonClick ( Sender : TObject ); > > private > { private 宣言 } > Count : HogeInt; > > public > { public 宣言 } > end; > > var > Form1: TForm1; > > implementation > > {$R *.fmx} > > procedure TForm1.FormCreate( Sender : TObject ); > > begin > Count.Clear; > Label1.Text := Integer( Count ).ToString; > end; > > procedure TForm1.ClearButtonClick( Sender : TObject ); > > begin > Count.Clear; > Label1.Text := Integer( Count ).ToString; > end; > > procedure TForm1.IncButtonClick( Sender : TObject ); > > begin > Count := Count.Inc; > Label1.Text := Integer( Count ).ToString; > end; > > end. > > ※ HogeIntを作りClearとIntメソッドを追加。 > 従来のIntegerが持つToString等はキャンセルされてしまうので、 > HogeIntでToStringを使いたい場合は、Integer型でキャストする事で使用可能。 > 例:Integer( HogeInt.Inc ).ToString; > > > 今では日付&時刻計算やトークン切り出しのヘルパー等を作ってます。 > > Label1.Text := HogeDateTime.AddMinute( 3 ).ToSecond.ToString; > Label1.Text := HogeTokun.Tokun( 5 ).ToLength; > > などと書く事ができ、利用するコード側で読みやすくなり、大変重宝しています。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link