あなたはあなたの質問[delphi]
に と同様にタグを付けている[pascal]
ようですが、あなたは実際に Delphi コードを書いているのだと思います。forward
次に、手順の順序とDavid が説明したディレクティブを気にする以外に、さらにいくつかのオプションがあります。
ほとんどの場合、Delphi
プロジェクト (GUIまたはコンソール) は「ユニット」に分割されます。典型的なユニットは次のようになります。
unit MyUnit;
interface
const
RANDOM_NUMBER = 17;
var
PrintExtraNiceMessage: boolean;
procedure DoThis;
procedure DoThat;
implementation
const
BUFFER_SIZE = 256;
procedure InitSomething;
begin
// TODO: do some internal work...
end;
procedure DoThis;
begin
// TODO: do something
end;
procedure DoThat;
begin
// TODO: do something else
end;
ユニットが 2 つの部分に分かれていることに気付くでしょう。パーツinterface
とimplementation
パーツです。このinterface
部分には、(関数、プロシージャ、型、定数、および変数の) 宣言のみが含まれます。ここで宣言された関数とプロシージャは、セクションで定義 (つまり、実装) されimplementation
ます。implementation
セクションで宣言されていない関数とプロシージャがセクションで定義されている可能性があることに注意してくださいinterface
。
壮大なアイデアは、interface
セクションの内容がプログラム内の他のすべてのユニットから見えるのに対し、implementation
セクションの内容はまさにこのユニット内でしか見えないということです。したがって、プログラム内の他のどのユニットでも、RANDOM_NUMBER
定数、PrintExtraNiceMessage
変数、および 2 つのプロシージャDoThis
とを使用できますDoThat
。ただし、このユニットでのみ使用できますInitFunction
(たとえば、またはの内部 )。さらに、定数はこのユニットの外でも見えません。DoThis
DoThat
BUFFER_SIZE
これは非常にエレガントなアプローチです。このinterface
セクションでは、このユニットが他のユニットでどのように使用されるか (たとえば、どのような機能があり、どのように使用されるか) を説明し、実装の詳細はセクションに「隠されています」implementation
。
このアプローチの利点は、少なくとも問題を解決できることです。、、、およびプロシージャが他のユニットから見えるようにする必要がある場合は、セクションで宣言する必要があります。しかし、それらは実際にプロシージャーになるまでにコンパイラーに認識されるため、セクション内のプロシージャーの下で定義 (実装) されている場合でも、これらを呼び出すことができます。しかし一方で、他のユニットにこれらの手続きを使用させることがまったく意味がない場合は、セクションで宣言するべきではなく、David が提案するようにする必要があります。これは、プロジェクトに通常のユニットがまったくない場合、つまり、add
multiply
subtract
divide
interface
questiontype
questiontype
implementation
interface
program
interface
とimplementation
パーツに分割されていないファイル。