Variable Funktionsparameter
Übersicht

DavidBetreff: Variable Funktionsparameter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ist es möglich Funktionsparameter variabel zu machen? Also wenn ich Parameter in einer Funktion ändere, so sollen die als Parameter übergebene Variablen auch auserhalb der betreffenden Funktion geändert werden. grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaub du meisnt GLobal ? wenn du dein Wert GLobal setzt kannst du von überall deinem Prog auf diese Vab zugreifen =) falls ich dich richtig verstanden habe =) | ||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Nein meinte ich nicht! Code: [AUSKLAPPEN] Function Blah( variable ) variable = 100 end function ;... x = 200 Print x ;Gibt 200 aus Blah( x ) Print x ;Soll 100 ausgeben Deutlicher? So im Prinzip will ich das haben nur klappts eben nicht wie mir aus C++ o.ä. bekannt. grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
achso ![]() Code: [AUSKLAPPEN] Vab = 200 X = bla(Vab) print X function bla(DD) DD = DD / 2 return DD end fucntion so müsste es gehen ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Neieiein, nicht als Rückgabewert. Das es so geht weis ich schon selbst... Beispiel: Code: [AUSKLAPPEN] var$ = "Hallo Welt" Print var$ ;alles klar ne? res$ = Func( var$ ) Print res$; "Hallo" Print var$; "Welt" Function Func( variable$ ) variable = Mid( var, 7, 4 ) return Mid( variable, 1, 5 ) end function Hoffe diesmal kams richtig rüber. grüße |
||
http://bl4ckd0g.funpic.de |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
David: Dein Beispiel würde auch 200 ausgeben beim 2ten Mal
Um es in der Funktion zu ändern müsstest du den Variablenpointer übergeben ( bzw. ByRef statt ByVal in anderen Sprachen wie C#, Delphi etc ). Einen solchen gibts in Blitz3D nicht. Die "einzige" Möglichkeit neben der Verwendung von globalen Variablen ( global ) ist dabei der Rückgabewert, wie bereits geschrieben. Eine weitere Möglichkeit wären Banks, allerdings wird dann das ganze beträchtlich umständlicher, weil du nicht mehr direkt darauf zugreifen kannst. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Danke für die Antwort. Das und wie es in anderes Sprachen funktioniert ist mir bekannt, allerdings wäre es durchaus praktisch gewesen, wenn es auch in BlitzBasic eine vergleichbar einfache Lösung gäbe. Übrigens sind die Schlüsselwörter in C# (ref und val) und in Delphi (const und var), in C++ kann man das mit Pointer bzw Referenzen lösen und dein Beispiel war Visual Basic (.NET). grüße |
||
http://bl4ckd0g.funpic.de |
- Zuletzt bearbeitet von David am Mo, Jul 26, 2004 11:35, insgesamt einmal bearbeitet
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach, lügt nicht, es geht!
in BB aber nur Mit Banks! du erstellst eine Bank (bank=Createbank(4)) und übergibst diese dann an die Function! Code: [AUSKLAPPEN] Function Blub(Bank)
;peek und poke wie verrückt end function print peekint Bank,0 bidde schön ![]() |
||
between angels and insects |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Danke, hat ja Dreamora schonmal erwähnt. Werds wohl dann so machen. ![]() grüße |
||
http://bl4ckd0g.funpic.de |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eben ja, das Peek Poke ist das Problem, weil Blitz die bank net wirklich als speicher verwendet, so dass man es direkt ausgeben könnte wie in jeder anderen "richtigen" Sprache. Aber wenn Blitz das könnte, hätten wir auch Pointer für Variablen wie in PureBasic etc. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, aber Bank ist ein pointer ...
Naja, BB hat viele schwächen. |
||
between angels and insects |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nö Bank is kein Pointer, sondern ein Index ( wie alle Objekte etc auch )
Wenn es ein Pointer wäre könntest du mit Bank + X das Xte Byte in der Bank ansprechen. Das dürfte darum so sein, weil Blitz intern einen GarbageCollector verwendet, welcher durch Pointer ausgehebelt wird. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es geht auch mit Types.Code: [AUSKLAPPEN] Type Integer
Field Value End Type Var.Integer = New Integer Var\Value = 200 Print Var\Value Func(Var) Print Var\Value WaitKey Function Func(Var.Integer) Var\Value = 200 End Function |
||
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Types sind wohl wirklich eine schöne Lösung.
Aber denkt auch daran, dass solche Seiteneffekte ansich keine besonders schöne Lösung sind! walski |
||
buh! |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Kommt drauf an, was man machen will. Ab und zu kommt man nur umständlich um die Lösung herum oder noch unschöner mit globalen Variablen z.B. grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mit Types finde ich besser als Globale Variablen und Banks ... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group