E2221 $WEAKPACKAGEUNIT が指定されている '%s' は初期化/終了部を持つことはできません (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動

$WEAKPACKAGEUNIT 指令が指定されたユニットは,初期化コード,終了処理コード,およびグローバルデータを持つことはできません。これは,アプリケーション内に弱くパッケージ化されたユニットのコピーが複数あると,そのユニットのデータを参照する際にあいまいさが生じてしまうためです。アプリケーションで動的にロードされるパッケージを使用する場合には,このあいまいさがさらに助長されます。


(*$WEAKPACKAGEUNIT*)
unit yamadama;
interface
implementation
  var
    Title : String;

initialization
  Title := 'Tiny Calc';
finalization
end.

{ 上の例には 2 つの問題点がある。1 つは Title がグローバル変数であること,もう 1 つは Title がユニットの initialization 部で初期化されていること }

{ 解決には 2 つの方法がある。ユニットから $WEAKPACKAGEUNIT 指令を削除するか,あるいは,グローバルデータ,初期化コード,および終了処理コードをすべて削除する }