[Gelöst] Debugger Fehler?

30. März 2009 18:00

Ein OnPush() Trigger wird debuggt , dieser hüpft in die Funktion calclocal und dort zählt eine for Schleife die Variable LOKALE years von 1 auf 10 hoch.
Es existiert noch eine GLOBALE years Variable.

Sobald die For Schleife komplett durchlaufen ist, hüpft der Debugger raus aus der Funktion calclocal zurück in den Trigger, jetzt müsste die lokale Laufvariable years weg sein - sie wird von dem Debugger aber immernoch (fälschlicherweise!?) angezeigt :

Bild1 - bisher alles paletti:
Bild

Bild2 - das zweite years, was eigenltich verschwinden sollte, steht nun scheinbar auf dem Wert 100 (Fehler in navision?)


*da ich die bilder verkleiner musste, kann mans nicht mehr sogut erkennen - sorry
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von dayscott am 31. März 2009 10:51, insgesamt 1-mal geändert.

Re: Debugger Fehler?

30. März 2009 18:14

Ist eher ein Anzeigeproblem, denke ich.
Dafür gibt es die Unterteilung der Registerkarten in All - Locals - Globals.
Wenn du den Trigger verlassen hast und nun in Locals wechselst, dürfte dort keine Variable namens years stehen - es sei denn, die wurde in diesem Trigger/der Funktion als lokale Variable angelegt. Theoretisch ...

Re: Debugger Fehler?

30. März 2009 21:16

die calclocal funktion hat bei mir eine lokale variable namens years !

Re: Debugger Fehler?

30. März 2009 21:20

dayscott hat geschrieben:die calclocal funktion hat bei mir eine lokale variable namens years !

Ich meinte die Funktion danach - dort wo du dich wunderst, dass du noch immer zwei years-Variablen siehst.

Re: Debugger Fehler?

31. März 2009 09:21

diese hat KEINE lokale Variable years, da hab ich grad nochmal extra nachgeschaut.


hier nochmal ein bild zur Verdeutlichung -(direktlink zum bild ohne werbung) :
http://img242.imageshack.us/img242/8117/alllocalsdeb.jpg

Re: Debugger Fehler?

31. März 2009 09:32

dayscott hat geschrieben:diese hat KEINE lokale Variable years, da hab ich grad nochmal extra nachgeschaut.

Wenn du es so sagst und auch das Ergebnis dieser Kalkulationen dafür spricht, dann ist es wohl ein Debugger-Anzeigefehler.

Und nein, dafür gibt es keine Updates o.ä., das heißt, du "musst den Debugger so lieben ... ähm nehmen, wie er leider ist" ;-)

Re: Debugger Fehler?

31. März 2009 09:55

ja ein Kollege von mir hat mir gerade per mail bestätigt, dass das eben ne Übung ist , die in der Realität nie so gemacht werden würde - da gleiche Variablennamen eh zur Verwirrung führen ^^

noch eine Frage bzgl. Funktionen in NAV:
Welchen Sinn haben Rückgabewertnamen ? Sollen damit globale Variablen direkt belegt werden können? ( ein anderer Zweck würde mir nicht einfallen)

Re: Debugger Fehler?

31. März 2009 10:06

dayscott hat geschrieben:Welchen Sinn haben Rückgabewertnamen ? Sollen damit globale Variablen direkt belegt werden können? ( ein anderer Zweck würde mir nicht einfallen)


Mit Rückgabename brauchst du nicht mit EXIT(Wert) hantieren, denn eine Zuweisung an den Rückgabewertname ist sozusagen sofort wirksam.

Beispiel: eine Funktion soll in einer Schleife einen Wert aufaddieren und diese Summe zurück geben.

Ohne Name:
MeineFunktion : Decimal
lokale Variable (locVar) vom Typ decimal deklarieren
Code:
...
REPEAT
  locVar += irgendwas;
UNTIL NEXT = 0;

IF Bed_Erfüllt THEN
  EXIT(locVar);

locVar := irgendwas_anderes;
EXIT(locVar);

Mit Name:
MeineFunktion : VarName : Decimal
Keine lokale Variable deklarieren
Code:
...
VarName := 0;
REPEAT
  VarName += irgendwas;
UNTIL NEXT = 0;

IF Bed_Erfüllt THEN
  EXIT;

VarName := irgendwas_anderes;

Re: Debugger Fehler?

31. März 2009 10:51

Natalie hat geschrieben:
Code:
...
VarName := 0;
REPEAT
  VarName += irgendwas;
UNTIL NEXT = 0;

IF Bed_Erfüllt THEN
 [b] EXIT[/b];

VarName := irgendwas_anderes;

Verstehe- d.h. wenn ich in der Funktion an dem VarName etwas ändere dann ändert es sich Direkt, so wie du gesagt hast - danke.

d.h. in navison brauche ich nicht zwingend ein exit bei einer Funktion mit Rückgabewert - sondern wenn der Code zu ende ist dann impliziert dass auch ein "Ende"

Re: Debugger Fehler?

31. März 2009 11:01

dayscott hat geschrieben:d.h. in navison brauche ich nicht zwingend ein exit bei einer Funktion mit Rückgabewert - sondern wenn der Code zu ende ist dann impliziert dass auch ein "Ende"

So ist es.