title image


Smiley Re: byVal - Ergebnisübergabe
erstens ein kleines detail:

Call fkt(01.01.05)

ist sicher mal falsch, da Hochkommas fehlen! richtig wär's:

Call fkt("01.01.05")



gut, jetzt BYVAL und BYREF:

wenn du die werte einer funktion übergibst, dann können das die kopien sein, oder aber auch original werte.

der unterschied ist selbsterklärend, wenn du kopien übergibst, bleibt dein original unverändert (also die variable die du der funktion übergeben hast, kann "bis es geht nicht mehr" in der funktion verändert werden, die bleibt aber ausserhalb der funktion unverändert).

ganz im gegenteil bei BYREF. Dort wird die original variable an die funktion übergeben. änderst du den wert der variablen in deiner funktion so wenn du aus der funktion zurück kommst, wird auch deine variable einen anderen wert haben (ahhh übrigens bei BYREF tut man eigentlich nur die referenz auf die original variable übergeben, aber schliesslich kommt das auf das gleiche, es wird eben die original variable verändert).



nun zu deiner frage:

den wert einer funktion kannst du zurückliefern indem du die funktion selbst mit einem datentyp definierst. zum beispiel



public function Addition(byval a as integer , byval c as integer) as integer

Addition=a+b

end function



Wenn du diese funktion aufrufst, dann machst du das sicher nicht mit:



call Addition(3, 4)



weil es passiert nichts sichtbares, SONDERN du wirst sie einer variable zuweisen oder in deinem fall einem FELD. also wenn du auf einem formular ein feld names ERGEBNIS hast, dann sieht das zum beispiel so aus:



- erstelle eben das feld ERGEBNIS

- erstelle ein BUTTON

- definiere EREIGNIS beim BUTTON und schreibe dort: Me.ERGEBNIS = Addition(3, 4)



wenn du also den BUTTON betätigst, erscheint in deinem feld 7





Noch etwas: mit BYREF kannst du also GLOBALEN variablen vermeiden, weil du kannst jeder funktion deine variable als BYREF übergeben und somit wird sie dort verändert als ob sie GLOBAL wäre. Das prinzip kennt man bei JAVA oder auch C++ (obwohl man dort eher ZEIGER verwendet. Einige behaupten dass ZEIGER und REFERENZEN nicht das selbe doch das ähnliche sind, aber was solls, C++ ist eh gestorben).

Mein TIPP: ich verwende nie referenzen (übergabe mit BYREF), weil es ist danach bei grösseren projekten unmöglich herauszufinden wo deine Variable tatsächlich verändert wird. mit BYVAL hast du die volle kontrolle über den Werteverlauf einer Variablen.





gruss

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: