Temp Variablen

centrox

Level-1
Beiträge
50
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Dass Temp Variablen temporär sind ist mir natürlich schon klar, weswegen ich sie in meinen FC/FBs auch erst mal besschreibe bevor ich sie lese oder rausschreibe. Nun bin ich aber gad auf was gestossen was ich gerne wüsste.

Ist der temporäre Stack einer Funktion beim Aufruf mit Nullen voll oder steht da undefiniertes von den vorherigen Funktionen drin. Bis gestern hätte ich gesagt es ist undefiniert, aber bin grad auf eine Funktion einer bestehenden Anlage gestossen die davon ausgeht dass Nullen drinstehen... Dieser FC ist nun seid über über zwei Jahren schon im Einsatz. Hab mal zu dem thema schon gegoogelt und ein wenig in der Hilfe gelesen, aber nichts eindeutiges gefunden. Hat da jemand ne genauere Info?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Zustände der Temp-Variablen sind absolut zufällig.
Wenn die Funktion seit 2 Jahren funktioniert dann ist das pures Glück.

Der Stack wird ja mehr oder weniger dynamisch aufgeteilt, bei entsprechend sparsamen Einsatz,
der Temp-Variablen könnte es sogar sein, das jeder FB/FC seinen eigenen Bereich im Stack abbekommt.

Gnade nur demjenigen Gott, der eine Funktion oder FB mit Temp-Variablen nachrüstet,
und dann genau solche Bausteine von solchen Trotteln nicht mehr funktionieren,
und man sich dabei nen Wolf sucht ...

Mfg
Manuel
 
Die Zustände der Temp-Variablen sind absolut zufällig.
Wenn die Funktion seit 2 Jahren funktioniert dann ist das pures Glück.

Der Stack wird ja mehr oder weniger dynamisch aufgeteilt, bei entsprechend sparsamen Einsatz,
der Temp-Variablen könnte es sogar sein, das jeder FB/FC seinen eigenen Bereich im Stack abbekommt.

Gnade nur demjenigen Gott, der eine Funktion oder FB mit Temp-Variablen nachrüstet,
und dann genau solche Bausteine von solchen Trotteln nicht mehr funktionieren,
und man sich dabei nen Wolf sucht ...

Mfg
Manuel


das bedeutet dass wenn man eine temporäre variable nicht beschreibt bevor man sie in z.B. einer Und verknüpfung verwendet, diese irgeneinen wert haben könnte?
Ich setzte temporärer variablen prinzipiell zu beginn eines FC auf 0 weil mir das mal jemand empfohlen hat. Eine Erklärung hab ich bis heute noch nicht gefunden (weil mir das auch noch nie passiert ist).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
der Zustand der Temp-Variablen ist undefiniert weil in dem Speicherbereich
der benutzt wird der ganze müll von vorherigen Bausteinen die die
Temp-Variablen benutzen drin steht.
somit ist der zustand der Temp-Var rein zufällig.
wenn man davon ausgeht daß die auf null sind und es funktioniert ist das glückssache.
bei der nächsten programmänderung kann es dann schon vorbei sein mit dem glück.
also immer erst beschreiben.
so ist es ja auch von S empfohlen.
 
Der Punkt von Vierlagig ist da in dem Spielchen auch noch ein höchst interessanter.

Eigentlich gibt es 2 Möglichkeiten was in den Temp-Vars stehen kann:
Der Wert vom letzten Zyklus des entsprechenden FC/FB (z.B. funktionieren in kleinen Programmen Befehle ala FP/FN mit Temp-Merkern)
ODER halt eben irgend einen zufälligen Wert, aus irgend welchen anderen FC's/FB's ...

Ergo, das diese Temp-Vars "exakt" den Wert null haben ist dann endgültig absoluter Zufall ...

Mfg
Manuel
 
Schön dass ihr der gleichen Ansicht seid wie ich, das ganze war so aufgebaut:

Im Temp Bereich eine Integer definiert.

Code wardann folgendermasen aufgebaut:

Vergleiche In Variable auf Grenzwerte
Springe wenn ausserhalb nach Ende:

Rumrechnerrei nach einem bestimmten Rechenalgorithmus, und das Ergebnis in die Temp rein.

Ende : Nehme die Temp Variable und lege sie auf den Ausgang


Aus dem Kommentar im Bausteinkopf ist zu lesen dass der Augang Null wird wenn der Wert ausserhalb der Grenzwerte.

Dass ich die Funktion dementsprechend geändert habe ist klar, ich stellte mir eben dadurch die oben gestellte Frage.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
verstehe ich deine beschreibung richtig, dass die berechnung übersprungen wurde, wenn außerhalb der grenzwerte?

also kein
IF <Grenzwerte>
THEN <berechne>
ELSE <0>
ausgang:=temp

sondern nur ein
IF <Grenzwerte>
THEN <berechne>
ausgang:=temp

dann stimme ich dir zu ... aber mit code hätte man es leichter nachvollziehen können :rolleyes:
 
@vierlagig: Jep genauso war es, und so wie du hab ich es auch abgeändert.

OK das nächste mal gibts dann auch Code:rolleyes:

Frohes schaffen noch!!!
 
Zurück
Oben