
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Das geht nicht. > Eine Funktion liefert immer nur einen Variablenwert zurück. > Bei der C-Control ist dies dann auch noch auf einen Zahlenwert beschränkt. > Daher schreibt man da die "Rückgabewerte" dann einfach in der Funktion in Variablen, die dann von der aufrufenden Funktion weiter verwendet werden kann. > Ich weiß, dass manchmal der Speicherplatz für solche Übergabevariablen nich ausreicht, geht aber leider nicht anders. Doch das geht. Allerdings gibt es auf Grund technischer Probleme keine einheitlichen Methoden. Auf der C-Control M Unit 2.03 werden Pointer unterstützt und damit kann man mehr als eine Variable zurückgeben: ' ********************************** ' ' BASIC++ Beispiele ' ' Mehrere Rückgabewerte in einer ' Funktion ' ' ********************************** DECLARE FUNCTION pq(p AS WORD, q AS WORD, ^x1 AS WORD, ^x2 AS WORD) DEFINE e1 AS WORD, e2 AS WORD pq(50, -3, ^e1, ^e2) PRINT "x1 = " & e1 '& " und x2 = " & x2 FUNCTION pq(p AS WORD, q AS WORD, ^x1 AS WORD, ^x2 AS WORD) @x1 = -1 * (p/2) + SQRT((p/2) * (p/2) - q) @x2 = -1 * (p/2) - SQRT((p/2) * (p/2) - q) END FUNCTION x1 und x2 sind in der Funktion andere Variablen als e1 und e2. Bei diesem Beispiel würde ich persönlich aber das REF Schlüsselwort verwenden um Platz zu sparen. Man kann natürlich nicht die Rückgabe von hier maximal 3 Werten in einer Anweisung machen. Eine weitere Methode wäre auf der M Unit 2.x das STACK Objekt. Auf der M Unit 1.1 (nicht 1.2) bietet sich PUSH und POP für die Stackoperationen an: FUNCTION foo() PUSH 1 PUSH 2 PUSH 3 END FUNCTION Foo() POP a POP b POP c Gruß, Stefan Meine Homepage: http://www.fdos.de/ccbpp |
| Antwort schreiben |