Funktionen öfters verwenden

Hotdog511

Grünschnabel
Servus,

ich habe eine Berechnung die ich öfters verwenden will. Es handelt sich z. B. um eine einfache Berechnung von Kreisumfangkoordinaten. Es sollen x-beliebige Kreise berechnet werden können, um diese real genug an etwas abprallen zu lassen...

Es würden Ein- und Ausgangsvariablen benötigt, ich habs erst mit einer Strukturform versucht, aber bin gescheitert.

Die Frage lautet eigentlich, wie ich eine Solche Berechnung mit div. Ein- und Ausgangvariablen verwenden kann?

zur Info, Code (nur voläufig):


Sub BallKoordinaten()
'Koordinaten vom Ballumfang berechnen
Dim Kreisradius As Integer
Dim KreisAnodeA(90) As Integer
Dim KreisKathodeB(90) As Integer

Kreisradius = Ball.Durchmesser / 2

'Werte 360° des Kreises auf 90 Punkte berechnen
Dim a As Integer
For a = 0 To 90
KreisAnodeA(a) = Kreisradius * Sin(a)
KreisKathodeB(a) = Kreisradius * Cos(a)
Next

'Längenwerte auf 360° übertragen
Dim b As Integer
For b = 0 To 90
Ball.KreisXPunkte(b) = Ball.LeftMaß + Kreisradius + KreisKathodeB(b)
Ball.KreisYPunkte(b) = (Ball.TopMaß + Kreisradius) - KreisAnodeA(b)
Next

'Errechnete Koordinaten Kreis aufmalen (testhalber)
If Ball.TrendXY = True Then
Dim c As Integer
For c = 0 To 90
DrawWidth = 4
Form1.PSet (Ball.KreisXPunkte(c), Ball.KreisYPunkte(c)), QBColor(2)
Next
End If
End Sub

Bin für jede Hilfe dankbar.
 
Wenn ich Dich richtig verstehe, willst Du eine Funktion mit beliebigen Werten verwenden, oder?

Dazu kannst Du die benötigten Eingangs- und Ausgangsvariablen als Parameter übergeben, z.B.:

Code:
Sub BallKoordinaten(a as integer, b as Integer, ...)
End Sub

Diese Prozedur wird dann mit beliebigen Einstellungen aufgerufen, die natürlich auch einzugeben sind.

Code:
Sub Aufruf ()
    Dim a as integer
    Dim b as integer

    a=Val(Text1.Text)
    b=Val(Text2.Text)

    Call BallKoordinaten(a, b)
End Sub

Alternativ kannst Du die benötigten Variablen auch als "Public" auf Projektebene in einem Modul dimensionieren, oder als Private auf Modulebene in einer Form. Dann müssen die Variablen nicht in jeder Prozedur seperat definiert werden, sondern stehen allen Prozeduren der Form zur Verfügung.

War es das, was Du wissen wolltest?

Grüsse
ronaldh
 
Du sprichst von Funktionen, wieso verwendest du dann nicht eine:
Visual Basic:
Function EineFunktion(ByVal a As Integer, ByRef b As Integer) As Integer
 'Hier kommt dann dein Code rein
End Function
Bei einer Funktion kannst du mehrere Variablen übergeben, dabei gibt es zwei Möglichkeiten:
1) ByVal: Du übergibst den Wert einer Variable, dieser Wert kann in der Funktion verwendet werden.
2) ByRef: Du übergibst die Referenz einer Variable. Auch der Wert der Variable kann in der Funktion verwendet werden, du kannst aber einen Rückwert an die ursprüngliche Variable übergeben.

Folgende Funktion als Beispiel:
Visual Basic:
Function EineFunktion(ByVal a As Integer, ByRef b As Integer) As Long
 'Als Rckgabewert der Funktion nehme ich mal die Summe
 EineFunktion = a + b
 'Weiters ändere ich den Wert von b (dem Referenzwert) die Differenz der beiden Werte zu
 b = b - a
End Function
Und der Aufruf:
Visual Basic:
Dim wert1 As Integer, wert2 As Integer, Ergebnis As Long
 wert1 = 1000
 wert2 = 3000
 Ergebnis = EineFunktion(wert1, Wert2)
 'Folgende Werte stehen dann in den Variablen:
 'wert1: 1000 ' Hat sich nicht verändert
 'wert2: 2000 ' Wurde verändert
 'Ergebnis: 4000 'Der Rückgabewert der Funktion


Der Doc!
 
Zurück