Seite 1 von 1

Assertion in C/AL[Gelöst]

Verfasst: 21. Januar 2009 17:18
von NAVGATOR
Bei Java gibt es Assertion(zusicherungen), die man am Schluss auf default setzen kann, oder um "tote" Zweige, die nie erreicht werden auszuschalten.
Gibt es etwas entsprechendes in C/AL?

Re: Assertion in C/AL

Verfasst: 21. Januar 2009 17:39
von Natalie
Ich kenne mich mit Java überhaupt nicht aus - habe ich die Frage richtig verstanden?
Diese Funktion oder dieses Tool sorgt dafür, dass du Quelltextzeilen ausfindig machen kannst, die nie durchlaufen werden (oder was sind Zweige?)?
Falls ja: Nein, die NAV-Entwicklungsumgebung bietet sowas nicht.

Re: Assertion in C/AL

Verfasst: 21. Januar 2009 18:30
von NAVGATOR
Nein, zum testen von Zwischenbedingungen in der Debugphase. Kann man auch durch If-Schleifen lösen, ist aber unpraktisch, da ich sie nach der Debugphase wieder alle per Hand wegmachen muss.
Assertions kann man am Anfang alle ein oder ausschalten.

Re: Assertion in C/AL

Verfasst: 21. Januar 2009 19:07
von Natalie
Ohne Beispiel verstehe ich es wohl noch immer nicht :-) aber das ist auch nicht relevant.
Du kannst im NAV-Debugger sog. Breakpoints setzen und an deren (Nicht-)Abarbeitung deinen Code überwachen. Diese kannst du auch ein- und ausschalten.
Im Debugger hast du außerdem die Möglichkeite, Variablen und Tabellenfelder gezielt zu überwachen, indem du sie dafür eine dafür vorgesehende Box schiebst.

Re: Assertion in C/AL

Verfasst: 21. Januar 2009 21:27
von SilverX
Eine Assertion ist eine Zusicherung. Quasi ein Kombi aus IF und ERROR im C/AL.

Würde es den Befehl geben, dann würde er so verwendet:

Code:
// Übergebener Wert für i ist garantiert kleiner als 5.
i += 1;

// Wenn i nach Addition doch > 5 ist, dann wird eine (sinnvolle) Fehlermeldung ausgegeben.
// ASSERT stellt also sicher, dass i <= 5 ist.
ASSERT(i <= 5);

EXIT(i);

Re: Assertion in C/AL

Verfasst: 23. Januar 2009 11:20
von NAVGATOR
SilverX hat geschrieben:Eine Assertion ist eine Zusicherung. Quasi ein Kombi aus IF und ERROR im C/AL.

Würde es den Befehl geben, dann würde er so verwendet:

Code:
// Übergebener Wert für i ist garantiert kleiner als 5.
i += 1;

// Wenn i nach Addition doch > 5 ist, dann wird eine (sinnvolle) Fehlermeldung ausgegeben.
// ASSERT stellt also sicher, dass i <= 5 ist.
ASSERT(i <= 5);

EXIT(i);



Genau, das mein ich Danke, Fall Gelöst!