AmiBlitz³
Shared Array? - Druckversion

+- AmiBlitz³ (https://www.amiblitz.de/community)
+-- Forum: AmiBlitz³ (https://www.amiblitz.de/community/forum-3.html)
+--- Forum: Questions & Answers (https://www.amiblitz.de/community/forum-7.html)
+--- Thema: Shared Array? (/thread-284.html)



Shared Array? - asrael - 18.05.2024

Hallo.

Ich bin gerade mal wieder etwas an AmiBlitz dran und zwecks Code-Struktur mal eine oder zwei Fragen:

- In einem Statement wollte ich auf eine globale variable, ein Array zugreifen. Wie mach ich das, oder geht das nur für primitive Datentypen?

- In dem Zusammenhang, da es ja keine mehrfach Return-Werte gibt, kann man pointer eines z.B. longs übergeben und den in der Funktion dereferenzieren? Hab ich nicht in der Doku gefunden.


Grüße,
Manfred


RE: Shared Array? - asrael - 19.05.2024

OK, denke ich habs für den ersten Teil: man braucht leere Klammern für den "Shared" Ausdruck, also "Shared myArray()".


RE: Shared Array? - hackball - 19.05.2024

Das zweite verstehe ich nicht ganz.

Du kannst, wenn du z.B. zwei Words als Returnwert brauchst, natürlich ein Long damit bestücken und den dann wieder zerlegen. Oder was meinst du?

Genauso kannst du auch wie schon in 1) ja ein Shared Newtype, z.B.
Newtype.multireturn
ret1.l
ret2.w
end newtype
deftype.multireturn mymr

etc.

verwenden.


RE: Shared Array? - asrael - 19.05.2024

Sorry, hatte ich zu umständlich erklärt. In AmigaE kann man mehrere Returnwerte zurück geben.
Das geht in Blitz nicht. Alternative wäre Zeiger auf deklarierte Variablen an eine Function/Statement zu übergeben die dann im Statement dereferenziert werden. Gutes altes C halt. Damit könnte man auch mehrere "Returnwerte" simulieren, zumindest hätte es denselben Effekt.
Weiß nicht ob das überhaupt geht in Blitz, konnte das in der Doku nicht finden.
Evtl. wäre es vielleicht auch gut wenn es nicht ginge. Smile


RE: Shared Array? - hackball - 19.05.2024

nein, das geht nicht, man kann nur einen Wert zurückgeben.

Aber du kannst ja einen Memorypointer auf eine Struct zurückgeben, oder Shared Variablen verwenden, wie ich oben schrieb.