Mehrere Variablen über Return zurückgeben?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Toasty

Betreff: Mehrere Variablen über Return zurückgeben?

BeitragSo, Aug 29, 2010 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Wie kann ich es schaffen, mehrere Variablen die in einer Funktion errechnet werden, in das Programm zurück zugeben?

Brauche schnelle Antwort!

Gruß Toasty
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

Der Eisvogel

BeitragSo, Aug 29, 2010 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Global var1
Global var2
Global var3

Function Berechne(p1,p2)
var1=1
var2=2
var3=3
End Function

Print var1
Print var2
Print var3


MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

mpmxyz

BeitragSo, Aug 29, 2010 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese Frage kann nicht beantwortet werden, weil es keine Möglichkeit dazu gibt.
[/reine Logik]
Du kannst aber Type-Einträge als Rückgabe nutzen.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Toasty

BeitragSo, Aug 29, 2010 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach soo leicht ist das...
Okay danke für die Hilfe Smile
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

Xeres

Moderator

BeitragSo, Aug 29, 2010 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Local arr3D[3]

Print(arr3D[0]+" | "+arr3D[1]+" | "+arr3D[2])
Zuaelle(arr3D)
Print(arr3D[0]+" | "+arr3D[1]+" | "+arr3D[2])
WaitKey()
End

Function Zuaelle(a[3])
a[0] = Rand(0,100)
a[1] = Rand(0,100)
a[2] = Rand(0,100)
End Function
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Xaymar

ehemals "Cgamer"

BeitragSo, Aug 29, 2010 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Function ReturnsMultiple$(a,c,b)
Return (a*b)+Chr(1)+(a*c)+Chr(1)+(b*c)
End Function

Dim SplittedString$(1)
Global SplitCount
Function SplitString(In$)
Local Pos,Ch$,All$
For I = 1 To Len(In)-1
Ch = Mid(In,I,1)
If Ch = Chr(1) Then SplitCount = SplitCount + 1
Next
Dim SplittedString(SplitCount)
SplitCount = 0
While Not Pos = Len(In)
Pos = Pos + 1
Ch = Mid(In,Pos,1)
If Ch = Chr(1) Or Pos = Len(In)
If Pos = Len(In) Then All = All+Ch
SplittedString(SplitCount) = All
All = ""
SplitCount = SplitCount + 1
Else
All = All+Ch
EndIf
Wend
End Function

SplitString(ReturnsMultiple(2,3,4))
Print "Value Count: "+SplitCount
For I = 0 To SplitCount-1
Print "Value at "+I+": "+SplittedString(I)
Next
WaitKey
Warbseite

M0rgenstern

BeitragSo, Aug 29, 2010 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ging das nicht auch so:
BlitzMax: [AUSKLAPPEN]
Local x:Int, y:Int, z:Int, a:Int, b:Int, c:Int

Function Berechnewas(pa:Int,pb:Int, pc:Int, vx:Var, vy:Var, vz:Var)
vz = pa - pb
vx = pc - pa
vy = pb - pa
End Function

'Hauptprogramm:

a = 5
b = 3
c = 10
Berechnewas(a,b,c,x,y,z)

Print x '5
Print y '-2
Print z '2


Hab da sowas im Kopf.

Lg, M0rgenstern

Der Eisvogel

BeitragSo, Aug 29, 2010 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das ist BlitzMax. Ich bin da auch fast drauf reingefallen. Hatte das auch schrieben wollen. Hehe
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Pummelie

BeitragSo, Aug 29, 2010 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hehe, das hier ist auch ne Möglichkeit:

BlitzBasic: [AUSKLAPPEN]
Local bank=CreateBank(8),a=2,b=5,c=7,d=1
BerechneIrrgendWelchenMuell(bank,a,b,c,d)
Print("Wert 1: "+PeekInt(bank,0)+" Wert 2: "+PeekInt(bank,4))
WaitKey


Function BerechneIrrgendWelchenMuell(bank,a,b,c,d)
PokeInt(bank,0,a+b)
PokeInt(bank,4,c+d)
End Function
It's done when it's done.

BladeRunner

Moderator

BeitragSo, Aug 29, 2010 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Toasty, benutz bitte nicht Eisvogels Antwort. Es ist generell ungünstig viele Globale zu deklarieren da dass die Fehleranfälligkeit deiner Programme massiv erhöht.
Erstelle besser einen Type mit den gewünschten Feldern und gib den zurück, das erhält dann die Datentrennung aufrecht.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Silver_Knee

BeitragSo, Aug 29, 2010 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xeres

Also dass bei BlitzArrays die Referenz übergeben wird hab ich auch nicht gewusst. Ist ja cool =D

Chester

BeitragSo, Aug 29, 2010 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mal so frei und empfehle auch Xaymars Version nicht zu benutzen, denn die Problematik über Strings zu lösen, ist der absolute Perfomancekiller.

M0rgenstern

BeitragSo, Aug 29, 2010 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Verdammt...
Ich empfehle auch meine Lösung nicht zu benutzen. Die gilt nämlich nur für BMax.
tut mir leid.

Lg, m0rgenstern

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group