Hallo Community,
ich stehe auf dem Schlauch und bräuchte mal wieder Eure Hilfe: Es geht um den Aufruf von Methoden und Funktionen über MethodenPointer und FunktionsPointer, wobei die Pointer einen Record als Parameter mitbekommen. Hierbei habe ich 3 verschiedene Varianten:
1: MethodenPointer direkt verwenden
2: Funktion wird über den FunktionsPointer aufgerufen
3: Funktion wird über den MethodenPointer aufgerufen
Um die Ergebnisse auseinanderzuhalten, machen die Routinen Folgendes:
– Methode: Bildet Eingabe hoch 3
– Funktion: Gibt das Quadrat der Eingabe aus
Alle drei Fälle liefern zwar das korrekte Ergebnis, allerdings ist im Fall 3 innerhalb der Funktion der Inhalt des Parameter-Records ein Zufallswert, trotzdem kommt das korrekte Resultat heraus. Das verwirrt mich etwas.
Code:
Di Ergebnisse:
1: Methode wird direkt aufgerufen:
MyMethode wurde aufgerufen!
Rec.X[0] = 2.00000000000000E+0000
Rec.X[1] = 3.00000000000000E+0000
Y = X^3 = 8 + 27 -----> korrekt!
2: Funktion wird über den FunktionsPointer aufgerufen:
MyFunktion wurde aufgerufen!
Rec.X[0] = 2.00000000000000E+0000
Rec.X[1] = 3.00000000000000E+0000
Y = X^2 = 4 + 9 -----> korrekt!
3: Funktion wird über den MethodenPointer aufgerufen:
MyFunktion wurde aufgerufen!
Rec.X[0] = 2.13089722546296E-0317 -----> FALSCHER Parameter-Inhalt
Rec.X[1] = 4.24412110025147E-0314 -----> FALSCHER Parameter-Inhalt
Y = X^2 = 4 + 9 -----> trotzdem korrekt! ???
Im Anhang habe ich ein einfaches Konsolenprogramm als Demo dazu.
Vielleicht kann mir jemand auf die Sprünge helfen, denn anscheinend sehe ich vor lauter Bäumen den Wald nicht mehr…
Danke für Eure Hilfe im Voraus!
Gruß, Andreas