E2221 $WEAKPACKAGEUNIT '%s' ne peut avoir de code d'initialisation ou de finalisation (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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.