Einzelnen Beitrag anzeigen

Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#1

Problem mit Record-Parametern an MethodenPointer bzw. FunktionsPointer

  Alt 19. Jun 2021, 22:34
Delphi-Version: 10.3 Rio
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
Angehängte Dateien
Dateityp: zip Record_an_MethodenPointer_1.zip (1,0 KB, 6x aufgerufen)
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat