Delphi学習ノート(一)の文法基礎

3480 ワード

DelphiはPascalに基づいて開発されたオブジェクト向けのプログラミング言語で、豊富なサードパーティコントロールのサポート、強力なデータベース開発機能、効率的なコンパイラを特徴とし、Windowsフォームプログラムの開発に最適な選択となっています.
  • Delphiプログラム構造通常1つのDelphiプログラムのソースコードは、1つのエンジニアリングファイル(dpr)の複数のunit(pas)からなり、unitは、unit名、interface、implementation、initialization、finalizationなどのモジュールと最後の「end.」からなる.構成.ここでinterfaceセクションでは、定数、変数、インスタンス、タイプなどを定義できます(宣言するだけで、実装する必要はありません).uses従文(ある場合)はinterfaceキーワードの直後に続く必要があります.interfaceセクション定義識別子は、usesによって他のファイルに参照されてアクセスできます.implementationセクションは主にinterfaceセクションで宣言されたインスタンスを実装します.定数、変数、インスタンス、タイプなどを定義することもできます.uses従文(ある場合)はimplementationキーワードの後に続く必要があります.このセクションで定義した識別子は、このunit内でのみアクセスでき、他のファイルでは参照できません.initializationはオプションで、このコードの一部はプログラムの起動時に実行されます.複数のunitがこの部分を含んでいる場合、各unitがエンジニアリングファイルusesの従文の順序で実行されます.finalizationセクションは、initializationセクションが存在する場合にのみ選択可能であり、プログラムが正常に終了した場合(Halt終了ではない)に実行され、実行順序initializationは逆である.(すなわち、先に参照したunitのinitializationが先に実行され、finalizationが後に実行される).
  • uses従文と引用uses従文の役割はjava/pythonのimport,c/c++のincludeに相当し,ユニット名はカンマで区切られ,セミコロンで終わる.エンジニアリングファイル(dpr)ではinを使用してソースファイルの名前とパスを指定できます.デフォルトでは、現在のディレクトリ・レコードで検索されます.複数の参照されたユニットに同じ識別子が定義されている場合、コンパイラは最後の識別子を取ります.被引用ユニットは使用される必要があり、間接的に使用される場合は参照は必要ありません.Delphiではループ参照は使用できません.つまり、あるユニットが直接または間接的に自分に参照されています.本当に必要な場合は、implementationセクションのuses従文で参照できます.
  • 識別子識別子はオブジェクトに使用され、システムが持参したものとユーザがカスタマイズしたものに分けることができる.システムに付属するものは、標準定数変数名、標準タイプ名、標準インスタンス名、標準ファイル名、システム予約字、指令子を含む.ユーザーがカスタマイズした:おとなしく実用的なアルファベットの下線で、大文字と小文字を区別しません.識別子の役割ドメイン:関数またはインスタンスに定義された識別子はローカル識別子であり、自分のコードブロックでのみ使用できます.その他はグローバル識別子(varセクションで定義)であり、interfaceで定義するかどうかによって公有またはプライベート識別子に分けられます.
  • 定数直接定数:$は16進数を表し、文字と文字列は単一引用符で囲まれています.シンボル定数:
                    Const
                            name1 = value;
                            name2 = value + name1;
    
    型定数:(配列、レコード、プロシージャ、ポインタなどを含まない共通タイプの場合)
                    Const
                             name1 : type1 = value1;
                             name2 : type1 = value2 +name1;          ( )
                             name3 : type2 = value1 + value2;         ( )
    
    リソース文字列:(リソースファイルとして、再コンパイルを必要としない)
                    resourcestring
                                    str = 'xxxxxxxxxx';                   
    
    配列定数:多次元配列、文字列配列;(カッコで囲まれ、カンマで区切られた)記録定数:記録と変形記録(tag);(同上)ポインタ定数:ポインタが指すオブジェクトの値は変更できますが、別のオブジェクトを指すことはできません.
                Const
                        pi : ^integer = @i;
    
  • 変数宣言:Varキーワードの後に宣言し、同時にタイプを宣言する必要がある.初期化:直接値(定数または式)を割り当て、オーバーフローに注意します(コンパイラはエラーを報告せずに切断する可能性があります).グローバル変数の場合、システムは自動的に0(またはnilまたは」)に初期化され、ローカル変数の場合、初期化しないとランダムに値が割り当てられるため、手動で初期化する必要があります.アドレス変数:
                name1 : type1;
                name2 : type2 absolute name1;
    
     , ( ) , ;(Tips: delphi shortstring, byte , , length 。)
    
  • タイプ宣言
        type    
              =  ;
    
    タイプ式が別のタイプ名(システムタイプまたはユーザーカスタムタイプのいずれか)である場合、2つのタイプは完全に同じ(いずれの場合も使用可能)であり、別名が定義されていると見なすことができる.タイプ式が構造である場合、定義されたタイプ名は一意であり、2つのタイプの式が完全に同じであっても異なるタイプです.次の形式で宣言する場合も同様の効果があります:
        type
              = type  ;
    
  • 注釈は3つの注釈方法を提供し、ネストする際に異なる方法を使用する必要がある:
     //...
     {...}
     (*...*)
    
  • 式with式:ネストされた使用を避ける;
  • ドメインは、名前と競合しています.役割ドメインについては、前のローカル識別子およびグローバル識別子を参照できます.関数/プロシージャブロック、interfaceまたはimplementationセクション、または記録されているかどうかに注意してください.内部.ネストされたブロックにネーミング競合が発生した場合、コンパイラは内層の識別子を使用します.複数のセル参照でネーミング競合が発生した場合、usesに現れる順序(前は外層、現在のセルは最背面層)によって決まりますが、限定子を付けることを強くお勧めします.どのユニットから来るかを指定します.