Home New Help Edit

Delphi10からやりなおすメモ

Suns & Moon Laboratory
Delphi memoとちょっと分けて書いてみる

見出しの右側についてるD10は、書いたときのDelphiバージョン


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言語 2013年4月 Marco Cantu

ARCの動作概要

オブジェクトを変数に代入した時、参照カウント変更。
スコープ外に出たとき、参照カウント変更。

既存コードの動作

ARC下で、FreeとFreeAndNilは、期待した箇所でデストラクタが実行されなくなる可能性がある。
ファイルのクローズの様に、期待した位置で確実にデストラクタを実行したい時は、DisposeOfを使う。

Free

D10ソースを見ると、ARC下でFree自体は何も処理をしなくなる。
最終的には、スコープを抜け、参照カウントがゼロになった時に破棄される。

FreeAndNil

変数にnilを代入する事により、参照カウントが変更される。

DisposeOf

ARCで導入されたメソッド
非ARC下では、Freeが呼び出される。

ARCメモ


Delphi モバイル コンパイラでの自動参照カウント
これまで、Delphi デスクトップ コンパイラ(DCC32、DCC64、DCCOSX)では、インターフェイス、動的配列、文字列の ARC をサポートしてきました (インターフェイスの ARC は Delphi 3 で導入され、文字列については AnsiString が Delphi 2 で導入)。 現在、Delphi モバイル コンパイラには、クラスの自動参照カウントが導入されています。

ドキュメントコメント D10

XML ドキュメント コメント

簡単に入力する方法無いみたいなので、コードテンプレートを登録。

ライブ テンプレートを作成する

コードテンプレート例
登録して、Ctrl+J xml enterと打てば、テンプレートが表示され、TABで変更項目をジャンプします。
<?xml version="1.0" encoding="utf-8" ?> <codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates" version="1.0.0"> <template name="xml_document" invoke="manual"> <description> Create a XML Document </description> <author> Embarcadero </author> <point name="Summary"> <text> 要約 </text> <hint> 対象となる関数またはクラスの要約です。 </hint> </point> <point name="ParamName"> <text> パラメータ名 </text> <hint> パラメータの名前 </hint> </point> <point name="ParamDescription"> <text> パラメータ説明 </text> <hint> パラメータの説明 </hint> </point> <point name="remarks"> <text> 備考 </text> <hint> 対象となる関数またはクラスに関する備考です。 </hint> </point> <point name="returns"> <text> 戻り値の説明 </text> <hint> 対象となる関数の戻り値の説明です。 たとえば、関数がエラー コードを返す場合もあるでしょう。 </hint> </point> <code language="Delphi" context="methodbody" delimiter="|"><![CDATA[ ///<summary>|Summary| ///</summary> ///<param name="|ParamName|">|ParamDescription| ///</param> ///<remarks>|remarks| ///</remarks> ///<returns>|returns| /// </returns> |end|]]> </code> </template> </codetemplate>

ライブテンプレート

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

Home New Help Edit
2016-07-15 10:09:40 32400