GLBasic forum

Other languages => GLBasic - de => Topic started by: Baggi on 2006-Mar-19

Title: Funktion Rückgabewert
Post by: Baggi on 2006-Mar-19
Hallo Gernot,

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

Baggi
Title: Funktion Rückgabewert
Post by: Kitty Hello on 2006-Mar-20
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.
Title: Funktion Rückgabewert
Post by: Baggi on 2006-Mar-22
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 :).
Title: Funktion Rückgabewert
Post by: Kitty Hello on 2006-Mar-22
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
Title: Funktion Rückgabewert
Post by: Baggi on 2006-Mar-23
Hey cool, danke. :)
Title: Funktion Rückgabewert
Post by: Tiuz on 2006-Oct-05
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
Title: Funktion Rückgabewert
Post by: Kitty Hello on 2006-Oct-06
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