| Function ByRef, Function ByVal | |
| | |
| | Ausgangs-Dynpro: |
| Funktionen können sich selber wieder aufrufen (Function / Sub). | |
| "Var$" ist die Variable, die als String deklariert wurde (Private Sub name(var$)). |
| |
| Private Wort1$, Wort2$ | |
| |
| Private Sub cmdEingabe_Click() | | |
| Wort1 = "Hallo1" | Variable 1 heißt "Hallo". | Vier MsgBoxen... |
| test (Wort1$) | Aufruf der Funktion "test" mit der Variablen Wort1 als | |
| End | String. Programm endet erst, nachdem alle |
| End Sub | Funktionen abgearbeitet wurden. |
| |
| Private Function test(Wort1$) | Start der Funktion "test". |
| MsgBox Wort1 | Ausgabe des Strings in MsgBox. |
| Wort2 = "Continue" | Die Beschriftung des CommandButtons wird verändert. | |
| cmdEingabe.BackColor = RGB(255, 0, 0) | | |
| again (Wort2$) | Aufruf der Funktion "again" mit einer Variablen als String. |
| End Function | |
| |
| Private Function again(Wort2$) | Start der Funktion "again". |
| cmdEingabe.Caption = Wort2 | Ausgabe des Strings im CommandButton. | |
| | | |
| Dim str$, str1$, str2$ | |
| str = "hallo 2" | |
| str1 = "hallo 3" | |
| str2 = "hallo 4" | |
| NotFirst str, str1, str2 | Aufruf der Funktion "NotFirst" mit mehreren Variablen. |
| cmdEingabe.BackColor = RGB(0, 255, 0) | | |
| |
| End Function | |
| |
| Private Function NotFirst(str$, str1$, str2$) | Start der Funktion "NotFirst" mit mehreren Variablen. |
| MsgBox str | |
| cmdEingabe.BackColor = RGB(0, 0, 255) | | |
| MsgBox str1 | | Button im Dynpro |
| cmdEingabe.BackColor = RGB(255, 0, 0) | | wechselt viermal Farbe. |
| MsgBox str2 | | |
| cmdEingabe.BackColor = RGB(0, 255, 0) | |
| | |
| Dim ergebnis%, laenge%, breite% | |
| ergebnis = 0 | |
| laenge = 15 | | |
| breite = 7 | | |
| ergebnis = test_neu(laenge, breite) | Aufruf der Funktion test_neu. (Wenn Aufruf am Prozedur- | 1. Test wird nach 2. Test |
| | ende erfolgt, erhält man die "richtigen" Werte). | ausgegeben ! |
| | | |
| MsgBox "1. Test: " & laenge & " und " & breite | Da die Funktion test_neu den Verweis ByRef enthält, |
| End Function | werden die Werte für (breite - 5) und (laenge - 5) zurück- |
| gegeben. |
| |
| |
| Um dem "unrichtigen" Ergebnis (hervorgerufen durch ByRef) vorzubeugen, muss man den Verweis ByVal | |
| verwenden: | |
| 'Private Function test_neu(ByVal laenge%, ByVal breite%) ' = Parameter als Verweis (ByVal). | |
| | 2.Test wird vor 1. Test |
| Private Function test_neu(ByRef laenge%, ByRef breite%) ' = Parameter als Verweis (ByRef). | ausgegeben ! |
| | | |
| laenge = laenge - 5 | Die ursprünglichen Werte werden nun verändert. |
| breite = breite - 5 | |
| | |
| MsgBox "2. Test: " & laenge & " und " & breite | |
| cmdEingabe.BackColor = RGB(0, 0, 255) | Anschließend springt das Programm in die Prozedur |
| End Function | "NotFirst" zurück. | |
| | |