Return()

Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Return()

 · 
Posted: 14.09.2020 - 15:52  ·  #1
Tach die Herren,

ich habe eine Frage zu Return in Functions.
Ich habe in einem Gerät seltsame Werte beobachtet und frage mich ob beides hier identisch ausgeführt wird:

("G_Average" ist eine Function die Werte zwischen 0 und 4096 als Float zurückgibt, A/D Wandler Daten.)


Code

Function FuncA : Float;
var f : Float;
begin
  f:=  (G_AVERAGE-2048)/12.8;    
  Return(f);
end;

Function FuncB : Float;
begin
  Return((G_AVERAGE-2048)/12.8);
end;


Ich habe eine Vermutung das letztere Variante Probleme mit der Berechnung hat, zumindest habe ich da für bestimmte hohe Rückgabewerte von G_AVERAGE eine große Veränderung des Rückgabewertes der Funktion in Verdacht, leider nur anhand von weiter verarbeiteten gespeicherten Messdaten zu vermuten.

Kann es sein dass in FuncB der Wert nicht als Float berechnet wird und daher ein Überlauf passieren kann?

Vielleicht hat jemand einen Tipp.
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Return()

 · 
Posted: 14.09.2020 - 16:23  ·  #2
Hi,
erhöhe mal testweise den Frame ob das was ändert
Gruß, Gunter
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Return()

 · 
Posted: 14.09.2020 - 17:53  ·  #3
Das hatte ich auch schon im Verdacht, das Problem dabei ist, dass ich es nicht testen kann, es handelt sich dabei um ein Messgerät dass in einer Rakete fliegt und dort Daten aufzeichnet, das lässt sich nur schwer am Boden simulieren. Da muss ich mir erst einmal etwas einfallen lassen.

Danke,

Louis
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: Return()

 · 
Posted: 14.09.2020 - 18:58  ·  #4
I have just compiled the functions, and in answer to your question, certainly with the last version of compiler the two functions are identical (apart from the superfluous copying of the result to the frame (local variable f) in the first. So the first uses 4 bytes more frame but that is the only difference.
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Return()

 · 
Posted: 14.09.2020 - 19:01  ·  #5
schreib eine Test-Datenaufzeichnungs-Routine, die nicht real Daten
ausliest, sondern von dir vorgegebene Werte zurückgibt
Gunter
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Return()

 · 
Posted: 15.09.2020 - 09:44  ·  #6
Ja, so ähnlich werde ich es machen müssen, vielleicht finde ich da ein Problem, ich werde eine Messreihe von SD-Card lesen und dann durchschicken, mal schauen was passiert.

Danke auch an Merlin für die Mühe!
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 14 · Cache Hits: 14   110   124 · Page-Gen-Time: 0.045772s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI