Programmierer: Findet den Fehler!

29. Oktober 2008 10:46

Kleines Rätsel für NAV-Programmierer unter euch:

Wenn ich in Codeunit "Inventory Profile Offsetting" in der Funktion MaintainPlanningLine die erste IF-Klausel abstrahiere, dann sieht sie (in der Origingal-Formatierung) so aus:

Code:
IF TRUE THEN
  IF TRUE THEN
    WITH ReqLine DO BEGIN
      IF TRUE THEN BEGIN
        CASE TRUE OF
        END;
      END ELSE
        CASE TRUE OF
        END;
      IF TRUE THEN
        i := i;
    END ELSE BEGIN
      IF TRUE THEN
        i := i;
      IF TRUE THEN
        i := i;
    END;


Warum ist das o.g. Codestück trotz folgendem Teilbereich kompilierbar?

Code:
WITH ReqLine DO BEGIN 
  ..
END ELSE BEGIN
  ..
END;


Lösung: Weil der Standard hier sehr missverständlich formatiert hat.
So wäre es wohl richtig:

Code:
IF TRUE THEN
  IF TRUE THEN
    WITH ReqLine DO BEGIN
      IF TRUE THEN BEGIN
        CASE TRUE OF
        END;
      END ELSE
        CASE TRUE OF
        END;
      IF TRUE THEN
        i := i;
    END // Zeilenumbruch
  ELSE BEGIN // nach links verschoben
    IF TRUE THEN
      i := i;
    IF TRUE THEN
      i := i;
  END;


Viel Spaß mit dem Standard ;-)