Funktion Rückgabewert

Previous topic - Next topic

Baggi

Hallo Gernot,

kann man von einer Funktion mehrere Werte zurückgeben lassen, zum Beispiel ein ganzes Array?

Baggi

Kitty Hello

Die Arrays werden per Referenz übergeben:
Code (glbasic) Select
DIM arr[5]
Fill(a[])
FOR i=0 TO BOUNDS(a[], 0)-1
   PRINT a[i], 0, i*16
NEXT


FUNCTION Fill: b[]
   DIM b[3]
   b[0] = 1;
   b[2] = 7;
ENDFUNCTION
Wenn die TYPEs mal funktionieren, kann man auch TYPES oder TYPE[] zurückgeben. Aber da ist noch viel Arbeit zu tun.

Baggi

Aha, ich konnte es noch nicht ausprobieren, aber
Code (glbasic) Select
...PRINT a[i]...erzeugt:
Code (glbasic) Select
1  0  7  0  0oder?
Ist genau, was ich brauche :).

Kitty Hello

Nope. Es druckt:
Code (glbasic) Select
1 0 7Weil: Ich mach DIM b[3] !! :D

Ich hab den Compiler jetzt so weit, dass er korrekte TYPES compiliert. Problem ist nur, die Fehler, die er ausgibt, wenn was nicht passt sind zum Davonlaufen. Bald aber eine Version mit Types. Dann geht auch:

Code (glbasic) Select
FUNCTION GiveArray [ ] : a,b,c
LOCAL arr[ ]
   DIM arr[3]
   arr[0] = a
   arr[1] = b
   arr[2] = c
   RETURN arr[ ]
ENDFUNCTION

Baggi

Hey cool, danke. :)

Tiuz

Hallo zusammen,

Hätte ein paar Fragen zu Feldern und Funktionen:

Funktioniert das angesprochene Zurückgeben von Feldern ("GiveArray") in der aktuellen Version?
Wie sieht das Ansprechen des Feldes im aufrufenden Programmteil aus ?
Z.B. x=GiveArray(1,2,3)[1] ??

Und,  ist es möglich einer Funktion im Aufruf sowohl ein/ mehere Feld(er) zu übergeben, die als Rückgabewert ein Feld liefert?

Grüsse, Tiuz

Kitty Hello

Hoppla. GiveArray geht nicht. Kompilerfehler. Nichts großes, ich ändere das mal.

Als Argumente kann man immer beliebig viele Felder übergeben:
Code (glbasic) Select
FUNCTION foo: a[], b[], c[]Der Rückgabewert der Function ist dabei egal.

Gruß,
-Gernot