-> Hier kostenlos registrieren
Lies doch mal hier:
https://www.sps-forum.de/faq/60947-temporaere-variable.html
https://www.sps-forum.de/faq/60947-temporaere-variable.html
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Das verstehst du eher falsch!![]()
Nein. Es ist so, dass der Speicher für TEMP-Variablen nicht fest von einem Baustein reserviert werden, sondern nur während des Aufrufs. Davor und danach steht dieser Speicher wieder anderen Bausteinen zur Verfügung um ihre TEMP dort abzulegen, diese Bausteine ändern also die Werte im TEMP-Speicher. Wenn man also eine Variable abfragt, die man vorher nicht zugewiesen hat, steht dort zwangsläufig noch der Wert, den ein anderer Baustein dort abgelegt hat, also ein mehr oder minder zufälliger Wert.... es könnte ja sein, dass sich der Zustand dann ändert, wenn die FC mit ihrer Temp-Variablen gerade nicht aufgerufen ist und dann würde ihr diese Wertänderung wohl durch die Lappen gehen...
Nein. Es ist so, dass der Speicher für TEMP-Variablen nicht fest von einem Baustein reserviert werden, sondern nur während des Aufrufs. Davor und danach steht dieser Speicher wieder anderen Bausteinen zur Verfügung um ihre TEMP dort abzulegen, diese Bausteine ändern also die Werte im TEMP-Speicher. Wenn man also eine Variable abfragt, die man vorher nicht zugewiesen hat, steht dort zwangsläufig noch der Wert, den ein anderer Baustein dort abgelegt hat, also ein mehr oder minder zufälliger Wert.
Richtig und damit besser.
Außerdem ist es neben der zwischenzeitlichen Benutzung des Speicherplatzes durch andere Variablen auch möglich, das die Temp-Variable beim nächsten Aufruf an einem anderen Speicherort angelegt wird und deswegen der Inhalt vor dem ersten Schreiben wieder zufällig ist.
OB1:
Call FC1
Call FC2
Im FC1:
Set
= xTemp
Im FC2:
U xTemp
= A0.0
OB1:
Call FC1
Im FC1:
Set
=xTemp
Call FC2
Im FC2:
U xTemp
= A0.0
Wenn das so passiert, dann ist das trotzdem zufällig! Es würde auch so sein, wenn die Temp-Variablen in FC1 und FC2 unterschiedliche Bezeichnungen haben. Eben nicht, weil es die gleiche Variable ist, sondern nur, weil sie zufällig nacheinander den gleichen Speicherplatz im Stack belegen.Also:
Code:OB1: Call FC1 Call FC2 Im FC1: Set = xTemp Im FC2: U xTemp = A0.0
Meine Behauptung (und bis dato bisherige Auffassung): A0.0 wird "1"
Hallo spirit!
Beispiele sind ja ansich was gutes, aber, sofern du die Möglichkeit hast, probier doch mal folgendes (jetzt bin ich nämlich selber neugierig geworden und ich habe leider keine Möglichkeit das zu Testen):
Lege ein neues Projekt an mit OB1 und zwei FCs oder FBs oder gemischt.
Im ersten Versuch rufst du im OB1 zuerst den ersten Baustein auf und danach den zweiten.
In beiden Bausteinen deklarierst du jeweils im temp. Bereich eine Bool Variable.
Im ersten Baustein setzt du die temp. Variable mit SET auf "1".
Im zweiten Baustein fragst du die temp. Variable ab und weißt sie z.B. einen Ausgang zu (ist ja nur ein Test).
Meine Behauptung (und bis dato bisherige Auffassung): A0.0 wird "1"
Versuch #2
Selbes Szenario, selber Code nur: Jetzt rufst du FC2 in FC1 auf!
Hier denke ich wird A0.0 "0" bleiben.
Und es stimmt, es passiert unabhängig davon, wie die Variablen heißen!
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen