6

一部のデータベースアプリケーション開発者は、このようにプロジェクトソースファイルを編集して、メインフォームの前にデータモジュールを作成することを好みます。

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TMainForm, MainForm);
{...}
  Application.Run;
end.

問題は-なぜですか?長所と短所は何ですか?

4

5 に答える 5

17

明らかな理由は、メインフォームのセットアップにデータモジュールが必要な場合です。たとえば、メインフォームがOnCreateで参照するものがある場合は、もちろん、データモジュールを最初に準備する必要があります。

そうでなければ、それは本当に重要ではありません。

于 2010-01-14T15:44:01.397 に答える
6

なぜ人々がこれを行うのかを説明しているので、メイソンの答えに同意します。ただし、IDE によって維持されるコード内の依存関係が隠されているため、これは悪いアプローチだと思います。私の意見では、データ モジュールは自動作成リストから削除し、メイン フォームの OnCreate メソッドで作成する必要があります。

于 2010-01-14T16:08:38.090 に答える
5

これには実際には 2 つの陣営があり、どちらも正しいです。

1 つ目は、アプリケーションが各フォーム/データ モジュールの寿命を管理できるようにします。このシナリオでは、メイン フォームがデータ モジュールを使用する場合、使用する前にデータ モジュールを作成する必要があります。これは小さなアプリケーションでは問題なく機能しますが、複数のフォームを含む大きなアプリケーションでは読み込みのオーバーヘッドが発生します...ただし、アプリケーションが読み込まれると、フォームは既にメモリ内に作成されているため、ほぼ瞬時に表示されます。各フォーム/リソースは既に作成されているため、アプリケーションの実行時に大量のメモリ ヒットが発生します。このメソッドは、アプリケーションに新しいフォーム/データ モジュールを追加するときに Delphi が「導く」デフォルトのメソッドです。メインフォームの OnCreate でデータモジュールを使用しない場合は、Application.Run が起動されるまで呼び出されないため、作成順序が低くなる可能性があります。

2 番目の陣営は、各フォーム/データ モジュール自体 (通常は MainForm 以外のすべてのフォーム) の作成と破棄を処理したいと考えています。この方法の利点は、アプリケーションの読み込みが速くなり、起動直後のメモリ消費量が少なくなることです。通常、このシナリオでは、使用する各フォーム/データ モジュールのライフサイクルを完全に管理するのはメイン フォーム (または他のフォーム) です。この方法は、多くのフォームを含む大規模なアプリケーションに最適です。

于 2010-01-14T17:10:02.450 に答える
0

それは、DataModule コンテンツが MainForm で利用できることを保証する最も怠惰な方法だからです。DataModule が 1 つしかない場合は問題ありません。

于 2010-01-14T16:16:42.687 に答える