E2221 $WEAKPACKAGEUNIT が指定されている '%s' は初期化/終了部を持つことはできません (Delphi)
エラーと警告のメッセージ(Delphi) への移動
$WEAKPACKAGEUNIT 指令が指定されたユニットは,初期化コード,終了処理コード,およびグローバルデータを持つことはできません。これは,アプリケーション内に弱くパッケージ化されたユニットのコピーが複数あると,そのユニットのデータを参照する際にあいまいさが生じてしまうためです。アプリケーションで動的にロードされるパッケージを使用する場合には,このあいまいさがさらに助長されます。
(*$WEAKPACKAGEUNIT*) unit yamadama; interface implementation var Title : String; initialization Title := 'Tiny Calc'; finalization end.
{ 上の例には 2 つの問題点がある。1 つは Title がグローバル変数であること,もう 1 つは Title がユニットの initialization 部で初期化されていること }
{ 解決には 2 つの方法がある。ユニットから $WEAKPACKAGEUNIT 指令を削除するか,あるいは,グローバルデータ,初期化コード,および終了処理コードをすべて削除する }