Der Zweck dieses Codes besteht darin, Benutzereingaben zu erhalten, um einen Bericht zu erstellen. Der Benutzer wählt den Monat und den Typ aus. Der Code funktioniert teilweise wie gezeigt, aber sobald ich versuche, ihn in eine Funktion zu konvertieren, die sich in einer anderen JSL-Datei befindet (aufgerufen mit „include“), schlägt er fehl. Ich kann die beiden Variablen nicht zurückbekommen und erhalte immer die Fehlermeldung „Name ungelöst“. Ich weiß, dass Month als Liste und der Typ als String (?) zurückgegeben wird. Was mir fehlt und wie kann ich den Monat und den von der Funktion zurückgegebenen Typ erhalten?
Danke!
Names Default To Here( 1 );
monthLst = {"may", "June", "July"};
nw = New Window( "Select Month",
<<MODAL> ","Buchhaltung", "Finanzen"}, ), Spacer Box( size( 10, 10 ) ), H List Box( Align( left ), Spacer Box(), Button Box( "Cancel", bbCancelled = 1 ), Button Box( "OK", bbCancelled = 0; selectMo = tb2 << Get Selected; rcb = cb << Get Selected; ) ) ), Spacer Box( size( 50, 10 ) ) ), Spacer Box( size( 25, 30 ) ) ); If( bbCancelled == 1, Stop(), If( selectMo == {}, //error modal ::dialogModalNoEdit( "Please select a Month." ); //modale Fensterfunktion rekursiv aufrufen SelExpModal( MonthLst ); , //wenn Werte ausgewählt wurden, Ergebnisse zurückgeben //Return(selectMo[1] ), ) ); Print(selectMo); Print(rcb);</MODAL>Vielen Dank jthi!Ich hätte nie daran gedacht, ein assoziatives Array zu verwenden.
Wenn ich richtig verstehe..
Wenn Sie eine Funktion erstellen, müssen Sie Werte zurückgeben, die Sie verwenden möchten, nachdem die Funktion ausgeführt wurde (es sei denn, Sie möchten globale Variablen verwenden).
In diesem Fall könnten Sie sie beispielsweise so zurückgeben (ein assoziatives Array wäre vielleicht besser):
return(selectMo, rcb);
Und in einem Skript, das dieses Skript enthält, können Sie darauf zugreifen:
Names Default To Here(1);
Include("MonthTypeFunc.jsl");
retVal = MonthTypeWindow();
show(retVal[1],retVal[2]);Angehängte Beispielskripte. Legen Sie es im selben Ordner ab und führen Sie Main.jsl aus.