Warnungen des Klassenformel-Compilers
Informationen
- Kategorien: Kernel | Klassenformeln
- Version: 11.1.0.830
- Veröffentlichungsdatum: Freitag, 13. März 2009
- Entwickler: Fischer
- Benötigt Datenbankänderung: Nein
- Betreff: Compiler Warnungen oninit onbeginedit
Beschreibung
Warnungen haben jetzt eine ID-Nummer und 2 neue Warnungen werden jetzt zusätzlich ausgegeben:
Bisher: Warnung (Id=1), wenn in Klassenformel eine lokalisertes Attribut verwendet wird
Neu: Warnung(Id=2), wenn Attribute in der Attributliste von onchanged virtuell oder readonly sind. (Da onchanged für diese Attribute nicht aufgerufen wird) Warnung(Id=3), wenn Attribute in der Attributliste von oninit nicht temporär sind. (Da dann der Wert aus der DB kommt und oninit nicht aufgerufen wird)
Speziell bei Warnung 1 kann der Compiler danebenliegen, denn es kann gute Gründe geben, ein lokalisiertes Attribut zu verwenden. Dennoch ist die Warnung sinnvoll, da sie eine Möglichkeit bietet, kritische Stellen zu entdecken.
Deshalb wurde eine Möglichkeit geschaffen, Warnungen aus- und einzuschalten
z.B. #pragma warning ( disable : 1 ) #pragma warning ( enable : 2 )
unterdrückt Warnung 1 und gibt Warnung 2 wieder frei.
Die #pragma-Zeilen dürfen an jeder Stelle im Code auftauchen, gelten aber nur innerhalb der Klassenformel.
Man sollte sehr vorsichtig sein mit dem Unterdrücken von Warnungen. Warnung bitte nur direkt vor der gewarnten, aber korrekten Stelle ausschalten und direkt danach wieder einschalten. Falls man eine Warnung zu Beginn einer Klassenformel ausschaltet und nicht wieder einschaltet, wird bei anderen (evtl. fehlerhaften) Stellen im Code der Klassenformel nichtmehr gewarnt !
Falls CheckMetadata-Flag in settings.ini gesetzt ist, werden beim Start von pit-FM nicht nur Compile-Fehler sondern auch Conpile-Warnings ausgegeben.
Beispielcode
#pragma warning ( disable : 1 )
int function x()
{
...
:locale_attr =$sText;
...
}
int function y()
{
...
:locale_attr = $sText;
...
}
#pragma warning ( enable : 1 )
int function z()
{
...
:locale_attr =$sText;
...
}
Warnung 1 wird für Funktion x und y unterdrückt, bei Funktion z wird wieder gewarnt.