Für diese Variable ist eine Zuweisung nicht erlaubt

14. März 2008 11:53

Hallo zusammen,

ich habe ein absolut merkwürdiges Problem. Ich verwendet einen Dialog, um einen Ladebalken anzuzeigen. Dieser ist eine lokale Variable in einer Report-Methode. Diesen Dialog übergebe ich als VAR-Parameter an andere Methoden. Einmal an eine globale Methode einer Codeunit und ein andermal an eine lokale Methode des Reports. Die Übergabe an die Codeunit funktioniert einwandfrei, jedoch an die lokale Methode nicht. Ich erhalte den Kompilierungsfehler

"Für diese Variable ist eine Zuweisung nicht erlaubt."

Kann jemand damit etwas anfangen? Google, MiBuSo etc. haben keine Antworten geliefert. Auch meine Kollegen sind ratlos. Ich kann dieser Meldung leider keinen Sinn entnehmen... :(

14. März 2008 12:06

Könntest du den relevanten Quelltextausschnitt veröffentlichen?
(Funktionsaufruf und Funktion selbst)

14. März 2008 13:05

Mittlerweile habe ich herausgefunden, dass Übergabe von Dialog-Variabeln nur zwischen verschiedenen Objekten, aber nicht innerhalb eines Objekts funktioniert.

So funktioniert dies hier z.B. nicht:

Code:
OnRun()
foo(progressWindow);

foo(bar : Dialog "In Use")


Wobei dies hier funktioniert:

Code:
OnRun()
mythicCodeunit.foo(progressWindow);


Ich kann mir beim besten Willen nicht erklären, warum dies so ist. Entweder ist es ein Bug in NAV 5.0 oder es ist gewollt (Warum auch immer??).

14. März 2008 13:51

Innerhalb eines Objektes brauchst du doch gar keine Funktion - da legst du progressWindow als globale Variable an.

Oder habe ich dich ganz falsch verstanden?

14. März 2008 14:15

Natalie hat geschrieben:Innerhalb eines Objektes brauchst du doch gar keine Funktion - da legst du progressWindow als globale Variable an.

Oder habe ich dich ganz falsch verstanden?
Nein, hast Du nicht ;) Es ist leider auch die einzige Möglichkeit, dies dennoch zu verwenden. Ich persönlich finde globale Variabeln ziemlich *bäh* und unschön, aber hier komme ich leider nicht darum herum.

Ich vermute, dass der Compiler die Dialog-Variabeln als "Hidden Global" einstuft, da immer nur ein Dialog zur selben Zeit geöffnet sein kann.

14. März 2008 15:52

Eichi hat geschrieben:Ich persönlich finde globale Variabeln ziemlich *bäh* und unschön, aber hier komme ich leider nicht darum herum.


*nick*
Was mich auch noch stört, ist, dass es nur global und lokal gibt - nicht aber z.B. lokal für mehrere Funktionen gleichzeig :roll:
Aber so was vermisst man wohl nur dann, wenn man es aus anderen Programmiersprachen kennt.

14. März 2008 15:58

Meine Wenigkeit kommt aus der C++Ecke und ich habe den Schock meines Lebens bekommen, als ich C/AL das erste mal sah... Ich denke mal, dass es gewollt ist, den Code so einfach wie nur möglich zu halten. Objektorientierte Programmierung, Späte Bindung etc.. vermisse ich schon sehr, aber dass Navision ja nur einen (ziemlich schlanken) Interpreter hat scheint dort wohl das Hauptproblem zu sein. Naja, hauptsache es funktioniert..

20. März 2008 14:09

C/AL ist eine "4GL"-Sprache, dementsprechend ist sie auch aufgebaut. (für detailliertere Infos einfach mal nach 4GL gogglen oder "wikipedia"en)
Komme auch aus der objektORIENTERTen Ecke ;)