E2221 $WEAKPACKAGEUNIT '%s' ne peut avoir de code d'initialisation ou de finalisation (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Une unité qui a été repérée avec la directive $weakpackageunit ne peut pas contenir de code d'initialisation ou de finalisation, ni de données globales. La raison à cela est que les multiples copies des mêmes unités packagées faiblement peuvent apparaître dans une application, puis en faisant référence aux données devenir une proposition ambiguë. Cette ambiguïté est éloignée lorsque des packages chargés dynamiquement sont utilisés dans vos applications.
(*$WEAKPACKAGEUNIT*) unit yamadama; interface implementation var Title : String; initialization Title := 'Tiny Calc'; finalization end.
Dans l'exemple ci-dessus, deux problèmes existent : Title est une variable globale et Title est initialisé dans la section initialization de l'unité.
Il existe deux alternatives : soit supprimer la directive $weakpakcageunit de l'unité, soit supprimer toutes les données globales, le code d'initialisation et de finalisation.