[GELÖST] Fehlermeldung beim Funktionsaufruf

17. August 2010 15:11

Hallo Zusammen,

ich bekomme beim Programmieren eines Aufrufs einer Funktion im Code folgende Fehlermeldung:
---------------------------
Microsoft Dynamics NAV
---------------------------
Reduzieren Sie den Ausdruck, so dass er weniger komplex ist.

---------------------------
OK
---------------------------

Was will mir diese Meldung genau sagen? Weiß das jemand von Euch?

Wobei ich leider zugeben muss, dass ich 30 Parameter in dieser Funktion mitgebe. Ist das ein Problem?
Wieviel kann ich höchstens übergeben?
In der Funktion selbst gab es dabei aber keine Probleme.

Viele Grüße
Zuletzt geändert von detam am 18. August 2010 08:20, insgesamt 1-mal geändert.

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 15:51

ja das hat was mit der Anzahl der Parameter zu tun! (ab 20 kommt diese Meldung!)

an der Stelle wuerde ich vll. versuchen der Fehlermeldung zu folgen O.o
Wenns nich anders geht, versuch mal Arrays!

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 15:58

Hallo Mathias,

danke für Deine Antwort.
Was meinst Du mit Arrays? Die sind ja dann auch Parameter oder geht es "nur" um die Menge der verwendeten Variablen?

Grüße

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 15:59

Ich meine mich vage erinnern zu können, dass es um verschachtelte Funktionen geht oder um eine zu platzsparende Programmierung mit Recordrefs und Fieldsrefs.

Beispiel für verschachtelt:
Code:
DeinWert := DeineFunktionA(Param1, BerechneParam2(NocheineFunktion));

Abhilfe:
Code:
WertFürParam2 := BerechneParam2(NocheineFunktion);
DeinWert := DeineFunktionA(Param1, WertFürParam2);

Vielleicht bringt dich das ja auf den richtigen Weg.

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 16:00

letzteres!

Gruß, Fiddi

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 16:18

Hallo Zusammen,

ich glaube nicht, dass es sich bei meiner Funktion bzw. beim Aufruf dazu um eine verschachtelte Funktion handelt.

Ich rufe aus einer Form heraus eine Funktion in einer Tabelle auf und bekomme dann Rückgabewerte zurück, die in dieser Funktion ermittelt wurden. Und bei diesen Rückgabewerten dreht es sich um 30 Stück, mit 15 gibt es keine Probleme.

Beim Programmieren des Funktionsaufruf in der Form bekomme ich dann beim Kompilieren diese obige Meldung.

Grüße

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 16:33

Stimmt, ab 20 Parametern kommt diese Meldung. Ein Array mit einer Dimension größer als 20 könntest du aber übergeben - das war's, was Matthias meinte.

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 16:44

Alles klar, ich versuche es mit Arrays.

Ich Danke Euch fürs Helfen.
Das nächste Problem kommt bei mir bestimmt. :wink:

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 17:42

Irgendwie bekomme ich es auch mit den Arrays nicht hin.

Ich habe in der Funktion und Form die gleichen Variablen jeweils mit dem gleichen Namen und der gleich hohen Dimension angelegt.

Bei diesem Aufruf "Funktion2(Wert[1],Wert[2],Wert[3],Wert[4],Wert[5]);"
bekomme ich beim Kompilieren die Fehlermeldung: "Die Arraydimensionen müssen identisch sein."
Aber sie haben die gleiche Dimension, nämlich 5.

Ändere ich den Aufruf ab in "Funktion2(Wert);", dann gibt es keine Probleme beim Kompilieren. Dort gibt es nicht mal Gemecker, dass nicht alle Parameter gefüllt sind.
Für mich sieht es so aus, als ob die Dimensionen dort nicht gehen.

Grüße

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 18:16

Darf man neugierig sein und fragen in welchem Businesscase man die Übergabe von 20-Parametern gleichzeitig braucht?

Oder versuchst du etwa das Buch von Wirth "Algorithmen mit Pascal" in C/AL umzusetzen? :shock:
Zuletzt geändert von Kowa am 11. Oktober 2018 12:10, insgesamt 1-mal geändert.
Grund: Vollzitat entfernt

Re: Fehlermeldung beim Funktionsaufruf

17. August 2010 18:35

Nicht So:

detam hat geschrieben:Bei diesem Aufruf "Funktion2(Wert[1],Wert[2],Wert[3],Wert[4],Wert[5])


sondern so:
Code:
Wert[1]:=1.0;
Wert[2]:=2.0;
    :
    :
Funktion2(Wert);

Das ganze Funktioniert aber nur, wenn alle Parameter vom gleichen Typ sind, oder zumindest soviele, dass du unter 20 Parameter kommst :wink: .

Aber Lord_British hat schon recht. Wozu muss man 20 Parameter an eine Funktion übergeben (Preisfindung?)?

Gruß, Fiddi

P.S.: Vergiss nicht, die Anzahl der Dimensionen bei der lokalen Parametervariablen der Funktion zu setzen.

Re: Fehlermeldung beim Funktionsaufruf

18. August 2010 08:16

Guten Morgen Zusammen,

@Fiddi, jetzt habe ich es verstanden, wie ich die Werte übergeben muss!

@Lord_British + Fiddi:
Ihr habt schon recht, das hört sich schon ein bißchen "gaga" an. Wenn ich mit meinen neuen Mathematik Werk fertig bin, dann bekommt Ihr ein Exemplar. :-)
Aber ich nutze die Funktion um von einem Auftrag mehrere (= 30) Werte immer wieder neu ermitteln zu lassen und diese Werte brauche ich z. B. in einigen Forms und Reports.
Die Angaben für diese berechneten Werte ändern sich oder es kommen neue hinzu, während der Auftrag bearbeitet bzw. produziert wird.

Viele Grüße

Re: [GELÖST] Fehlermeldung beim Funktionsaufruf

9. Dezember 2010 11:51

Hallo detam!
Ich denke für Deine Verwendung wäre es geschickter, wenn Du die ganzen Parameter in eine einige "Parameter"-Table packst (z.B. Forms Properties). Dann bist Du später (Änderung Anzahl Parameter) flexibler und kannst alles noch sauber dokumentieren. Für verschiedene Bereiche solltest Du eigene Tabellen verwenden (z.B. Preisfindung etc.).

Code:
lrFormProp."Field1 Visible" := FALSE;
lrFormProp."Check Field1" := FALSE;
....
pubMyMethod(lrFormProp);


Viele Grüße
Christian