En vaffor’n fisk?

Eller udtrykt som Klassisk Dynamics C5 2012 SP2 HF16 og HF17 gør det: “Syntaxfejl”.

I de to hotfix-version, som i øvrigt er de nyeste lige p.t., er #ApplBuild-makroen ændret, så den i stedet for at definere en streng med applikationsversionen direkte, kalder en global funktion, der så returnerer strengen.

Problemet er blot at compileren kløjs i det:

PRINT #ApplBuild
PRINT SUBSTR(#ApplBuild,1,3)
PAUSE

Ovenstående XAL-kodestump compiler og virker i Klassisk Dynamics C5 2012 SP2 HF15, men ikke i Klassisk Dynamics C5 2012 SP2 HF16 og HF17.

Første linje giver ikke problemer, men linje nr. 3 med “PAUSE” giver en “Syntaxfejl”. Og fjernes PAUSE-linjen, får man i stedet en “-5, Koden er afsluttet for tidligt”.

Den eneste forklaring jeg kan finde er at compileren får den nye struktur men en funktion der returnerer en konstant galt i halsen når SUBSTR-kommandoen kaldes.

Workarounden er lige for: Put værdien fra #ApplBuild i en variabel og kald SUBSTR på den i stedet, så spiller det.

Fejlen er naturligvis meldt ind til Microsoft.

 


Fejlen er delvist løst i C5 2012 SP2 HF18, men ikke så det bare virker. I stedet for de kryptiske fejl, får man nu fejlen “Fejl: -13, Macroen mangler en } eller en \n”

Dvs. man må i makroen skifte kommentaren i sidste linje til at bruge { } i stedet for //, eller i det mindste sørge for at der er en tom linje sidst i makroen. Det er sådan set det den nye fejl betyder!