Assertion in C/AL[Gelöst]

21. Januar 2009 17:18

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?
Zuletzt geändert von NAVGATOR am 23. Januar 2009 11:20, insgesamt 1-mal geändert.

Re: Assertion in C/AL

21. Januar 2009 17:39

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

21. Januar 2009 18:30

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

21. Januar 2009 19:07

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

21. Januar 2009 21:27

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

23. Januar 2009 11:20

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!