[Gelöst] Wie füllt man eigentlich Type-Arrays über eine Funktion ?

Previous topic - Next topic

Trabant 500

Hi liebe Community.

Ich versuche mich gerade mal wieder an Types und wieder sehe ich den Wald vor lauter Bäumen nicht.
Die normalen Types habe ich mittlerweile verstanden und kann mit diesen auch arbeiten, aber mit Arrays in Types komm ich grad nicht so wirklich zurecht und die Hilfe bzw. das Forum haben mich da bis jetzt leider nicht viel weiter gebracht.

Folgendes Problem:
Ich möchte einer Funktion Werte übergeben, diese irgendwie berechnen und in einem Array speichern.  Soweit kein Problem.
Allerdings möchte ich dann dieses Array zurückgeben und in einem Type-Array speichern.

Hier mal etwas Pseudocode:
Code (glbasic) Select
FUNCTION Berechnen: wert1, wert2, schritte
LOCAL wert1, wert2, schritte

    REDIM Ergebnis[schritte]
    FOR i=0 to schritte-1
        Ergebnis[i]=i*wert1+wert2
    NEXT

    RETURN Ergebnis[]
ENDFUNCTION


Aufgerufen werden soll das dann folgendermaßen zum Beispiel:
Code (glbasic) Select
W.BlaBla1[]=Berechnen(5, 3, 15)
W.BlaBla2[]=Berechnen(2, 13, 800)
DIMPUSH Werte[],W

X.BlaBla1[]=Berechnen(7, 5, 120)
X.BlaBla2[]=Berechnen(4, 37, 3587)
DIMPUSH XWerte[],X


Wie man hoffentlich sieht, möchte ich die Funktion nicht nur für eine bestimmte Typestruktur nutzen, sondern sie soll von mehreren, unabhängig voneinander, angesprochen werden können.
Kann mir da bitte jemand auf die Sprünge helfen, oder geht das gar nicht so wie ich mir das vorstelle ?
IF was <> passt
   was = passt
ENDIF

backslider

Wie wäre es mit

Code (glbasic) Select
FUNCTION Berechnen: wert1, wert2, schritte, return_value[]
LOCAL wert1, wert2, schritte,return_value[]

    REDIM Ergebnis[schritte]
    FOR i=0 to schritte-1
        Ergebnis[i]=i*wert1+wert2
    NEXT

    return_value[]=Ergebnis[]
ENDFUNCTION

Aufruf->Berechnen(5,3,15,W.BlaBla1[])


ODER eventuell

Function Berechnen[]:
Endfunction

? Nur sone spontane Idee

lG

Trabant 500

Also ich kann mich irren, aber ich glaube so gehts erst recht nicht, weil mit
Code (glbasic) Select
Berechnen(5,3,15,W.BlaBla1[])
übergebe ich der Funktion ja ein leeres Array, welches aber eigentlich gefüllt werden soll.
IF was <> passt
   was = passt
ENDIF

backslider

Jap, du gibst der Funktion dein leeres Array, berechnest deinen Kram und schiebst dein Ergebnis am Ende in dein noch leeres Array... ;)

Trabant 500

Ich habs gerade ausprobiert und siehe da...es funktioniert. :good:
Auf so eine Idee wäre ich nicht gekommen, da ich meistens viel zu kompliziert denke, aber dank Dir funktioniert es jetzt so wie es soll.
Danke für die schnelle Hilfe !  :nw:
IF was <> passt
   was = passt
ENDIF

backslider

Wenn ich schonmal helfen kann, dann helf ich doch gern!
Schön, dass es funktioniert!  :good: