FB mit lokalen Variablen schreiben

Zuviel Werbung?
-> Hier kostenlos registrieren
So sind zwar Deine Bezeichnungen der lokalen Variablen etwas besser, ich empfehle Dir aber trotzdem, statt z.B. mw am Anfang lieber die Kurzbezeichnung des Datentyps, also z.B. int, zu wählen. Ist aussagekräftiger.
 
Das ist der Grund, warum die temporäre Index-Variable weiter ihre Gültigkeit beibehält? Soll aber lt. Definition nicht sein dürfen oder?

Da sich die Bausteine den Lokaldaten-Stack teilen, stehen immer die Werte von dem Baustein drin, der den Speicherbereich als letztes benutzt hat.
Dadurch spricht man von einer Gültigkeit nur in einem Zyklus pro Baustein, da du ja nicht wissen kannst welcher Baustein als letztes den L-Stack benutzt hat.
Wenn jetzt kein Baustein den selben Speicherbereich im L-Stack benutzt dann "überlebt" dein Wert den ganzen Zyklus und ist im nächsten wieder vorhanden.
 
So sind zwar Deine Bezeichnungen der lokalen Variablen etwas besser, ich empfehle Dir aber trotzdem, statt z.B. mw am Anfang lieber die Kurzbezeichnung des Datentyps, also z.B. int, zu wählen. Ist aussagekräftiger.

Bei mir steht das m für Merker und w für WORD. Wenn ich mi_ für die Voranstellung verwenden würde, wüßte ich nicht immer sofort, dass bei einer mi_variable nicht Merker_INT zu deklarieren ist, sondern Merker_WORD.



Die Index Variable solltest du im Stat-Bereich zwischenspeicher.
Code:
// Index Laden
L #stat_index
T #temp_index

// Dein Code

// Index Sichern
L #temp_index
T #stat_index



Wollte ich gerade fragen, ob es nur Glück war, dass die Index-Variable überlebt hatte.

Danke, das Zwischenspeichern und Zurückkoppieren in den TEMP-Bereich hat gut geklappt.
 
Warum STAT nicht geht? Weil der AWL-Compiler es nicht kann.

Harald

Als Anfänger weiß man das nicht sofort.


Wenn der Pointer #MD1 unbedingt STAT sein muß, dann kann er auch extra nur für die speicherindirekte Operation auf ein TEMP-DWORD umkopiert werden:
Code:
L #MD1
T #TEMP_PTR

L #DATEN
AUF #DATENBAUSTEIN
T DBW[#TEMP_PTR]
Harald

Umkopieren hat gut geklappt, danke dir!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei mir steht das m für Merker und w für WORD. Wenn ich mi_ für die Voranstellung verwenden würde, wüßte ich nicht immer sofort, dass bei einer mi_variable nicht Merker_INT zu deklarieren ist, sondern Merker_WORD.

Nur verwendest du keine Merker, sondern deine Variablen liegen in einem Instanzdatenbaustein bzw am L-Stack. ;)
 
Zurück
Oben