Strukturie Prozedurrückgabe bei PureBasic
Verfasst: 24.07.2006 14:05
Standardmäßig wird bei PureBasic die Rückgabe von strukturierten Variablen aus Prozeduren nicht unterstützt.
Es gibt jedoch unter Verwendung von Pointern einen sehr einfachen Umweg, um dies zu tun.
Bei der Methode mit den Pointern ist es dann auch möglich, mehrere Rückgaben aus einer Prozedur zu machen.
Der Vorteil einer strukturierten Werte-Rückgabe mit Pointern gegenüber der
Verwendung von globalen Variablen, deren Werte während der Prozedur geändert würden, besteht darin, dass die Rückgabe auch in verschiedene Variablen (Prozeduraufruf) möglich ist und nicht nur in "die" globale Variable, die in der Prozedur vorkommen müsste, und dass die Variablen, die die Werte erhalten sollen nicht global sein müssen.
Uff, das war ein Satz !!!
Code für die Rückgabe in eine Variable:
Aufruf der Prozedur:
Um Werte in weitere Variablen zurückzugeben, müssen lediglich neue Pointer in die
Prozedurargumente eingefügt werden.
Es gibt jedoch unter Verwendung von Pointern einen sehr einfachen Umweg, um dies zu tun.
Bei der Methode mit den Pointern ist es dann auch möglich, mehrere Rückgaben aus einer Prozedur zu machen.
Der Vorteil einer strukturierten Werte-Rückgabe mit Pointern gegenüber der
Verwendung von globalen Variablen, deren Werte während der Prozedur geändert würden, besteht darin, dass die Rückgabe auch in verschiedene Variablen (Prozeduraufruf) möglich ist und nicht nur in "die" globale Variable, die in der Prozedur vorkommen müsste, und dass die Variablen, die die Werte erhalten sollen nicht global sein müssen.
Uff, das war ein Satz !!!

Code für die Rückgabe in eine Variable:
Code: Alles auswählen
Structure ab
a.l
b.d
EndStructure
Procedure SetValue(*Pointer_to_a_structured_Variable.ab) ;WICHTIG:Der Pointer muss die selbe Struktur haben wie die Zielvariable
;Eigener Prozedurcode:.....
;...
;...
With *Pointer_to_a_structured_Variable
;Beispiel:Rückgabewerte:1,2
\a=1
\b=2
EndWith
ProcedureReturn ;zum evtl.Verlassen der Prozedur und zur evtl.Übergabe eines Exitcodes
EndProcedure
Code: Alles auswählen
;Beispiel:
SetValue(@Variablenname.ab) ;Die Variable "Variablenname.ab" wird nun die Werte erhalten.
Prozedurargumente eingefügt werden.