delphi10
*Delphi10からやりなおすメモ [[index]] [[dev/delphi]]とちょっと分けて書いてみる 見出しの右側についてるD10は、書いたときのDelphiバージョン #contents **classの書き方 D10 >type > Tclassname = class(TObject) > public > constructor Create; > destructor Destroy; override; > end; クラス名の先頭はTを付ける。Tじゃなくても良いけど、慣例でそうなってる。 Tだと名前かぶってやだなーという時は、IndyみたいにTIdClassnameみたいに、Txxを長くすると良いかも。 コンストラクタはCreateを使う。 デストラクタはDestroyを使い、overrideする。 overrideするのは、TObjectで定義されているため、override指定しないとwarningになる。 Freeを定義しないの?とか思うけれど、Destroyを使う。 Freeは、オブジェクトがnilでないならデストラクタ(destroy)実行するようになっている。 **ARC D10 モバイルアプリ開発時、オブジェクトの解放(Free)は記述しない。 デストラクタを明示的に実行したい場合は、DisposeOfを使う。 Windowsのクラスに関しては、D10の時点ではARC非対応。 Windowsアプリ開発、今後のコーディング方針はこんな感じか... Freeはいままで通り記述。 デストラクタでファイルCloseやDB切断処理ある場合は、Freeを使わず、DisposeOfを使用する。 ***ARC必読 これが一番詳しい [[モバイル開発のためのDelphi言語>https://www.embarcadero.com/images/jp/dm/technical-papers/the_delphi_language_for_mobile_development_wp_jp.pdf]] 2013年4月 Marco Cantu ***ARCの動作概要 オブジェクトを変数に代入した時、参照カウント変更。 スコープ外に出たとき、参照カウント変更。 ***既存コードの動作 ARC下で、FreeとFreeAndNilは、期待した箇所でデストラクタが実行されなくなる可能性がある。 ファイルのクローズの様に、期待した位置で確実にデストラクタを実行したい時は、DisposeOfを使う。 ****Free D10ソースを見ると、ARC下でFree自体は何も処理をしなくなる。 最終的には、スコープを抜け、参照カウントがゼロになった時に破棄される。 ****FreeAndNil 変数にnilを代入する事により、参照カウントが変更される。 ***DisposeOf ARCで導入されたメソッド 非ARC下では、Freeが呼び出される。 ***ARCメモ [[Delphi モバイル コンパイラでの自動参照カウント>http://docwiki.embarcadero.com/RADStudio/Seattle/ja/Delphi_%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB_%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%81%A7%E3%81%AE%E8%87%AA%E5%8B%95%E5%8F%82%E7%85%A7%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88]] >これまで、Delphi デスクトップ コンパイラ(DCC32、DCC64、DCCOSX)では、インターフェイス、動的配列、文字列の ARC をサポートしてきました >(インターフェイスの ARC は Delphi 3 で導入され、文字列については AnsiString が Delphi 2 で導入)。 >現在、Delphi モバイル コンパイラには、クラスの自動参照カウントが導入されています。 **ドキュメントコメント D10 [[XML ドキュメント コメント>http://docwiki.embarcadero.com/RADStudio/Seattle/ja/XML_%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88_%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88]] 簡単に入力する方法無いみたいなので、コードテンプレートを登録。 [[ライブ テンプレートを作成する>http://docwiki.embarcadero.com/RADStudio/Seattle/ja/%E3%83%A9%E3%82%A4%E3%83%96_%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B]] コードテンプレート例 登録して、Ctrl+J xml enterと打てば、テンプレートが表示され、TABで変更項目をジャンプします。 > >
version="1.0.0"> >
>
> Create a XML Document >
>
> Embarcadero >
>
>
> 要約 >
>
> 対象となる関数またはクラスの要約です。 >
>
>
>
> パラメータ名 >
>
> パラメータの名前 >
>
>
>
> パラメータ説明 >
>
> パラメータの説明 >
>
>
>
> 備考 >
>
> 対象となる関数またはクラスに関する備考です。 >
>
>
>
> 戻り値の説明 >
>
> 対象となる関数の戻り値の説明です。 たとえば、関数がエラー コードを返す場合もあるでしょう。 >
>
>
///
|Summary| >///
>///
|ParamDescription| >/// >///
|remarks| >///
>///
|returns| >///
>|end|]]> >
>
>
**ライブテンプレート Ctrl+Jを入力してから、forとか入力すると、コードテンプレートが表示される。 **ヘルプインサイト マウスカーソルを合わせるか、Ctrl+Shift+Hを押す。 [[http://docwiki.embarcadero.com/RADStudio/Seattle/ja/%EF%BC%BB%E3%83%98%E3%83%AB%E3%83%97_%E3%82%A4%E3%83%B3%E3%82%B5%E3%82%A4%E3%83%88%EF%BC%BD]]
2025-03-31 23:53:43 32400