共有ファイルのクライアントファイルを含む
質問
さて、ゲーム用の2つのプロジェクトがあります。 1つはサーバーで、1つはクライアントです。共有ユニットを、クライアント/サーバープロジェクトに含めるために使用する共有フォルダーに保管します。ただし、問題があります。クライアント /サーバーに別のファイルが必要な共有ファイルがあります。例:MyShareDlibはコンソールに印刷する必要がありますが、クライアント/サーバーコンソールは異なります。私の選択肢は何ですか?ありがとう
解決
共有ファイルで使用できます 定義 コンパイラディレクティブ
例えば
{$IFDEF MYSERVER}
Writeln('Server'); // this code executes
{$ELSE}
Writeln('Client'); // this code does not execute
{$ENDIF}
次に、サーバープロジェクトでMyServerを定義し、クライアントでmyClientのプロジェクトを定義し、共有コードを分離したときに{$ ifdef)ステートメントを使用します。
条件付きディレクティブ$ ifdef、$ ifndef、$ if、$ elseif、$ else、$ endif、および$ ifendにより、条件シンボルのステータスに基づいてコードをコンパイルまたは抑制できます。 $ if and $ elseifでは、宣言されたdelphi識別子に基づいて条件付き編集を可能にします。 $ IFOPTは、指定されたコンパイラスイッチが有効になっているかどうかに応じて、コードをコンパイルまたは抑制します。
ただし、共有コードがDLLまたはパッケージなどの他の種類の準拠リソースにある場合、これは機能しません。
条件付き定義は、ソースコードが再コンパイルされた場合にのみ評価されます。条件付きシンボルのステータスを変更してからプロジェクトを再構築すると、変更されていないユニットのソースコードが再コンパイルされない場合があります。プロジェクトの使用|すべてのプロジェクトを構築して、プロジェクト内のすべてが条件付きシンボルの現在のステータスを反映していることを確認します。
他のヒント
それらが違う場合、それらは実際には共有ファイルではありません。