Guter Hinweis, so kann man sich Bytes sparen. String ohne [n] belegt die vollen 254 Bytes (pro Zeichen ein Byte)- eventuell den String in der Länge limitieren wenn du weißt wie lang deine Keys maximal sind.
Das liegt daran, dass du den Eingang ja jederzeit ändern kannst - Array's können aber nicht dynamisch erzeugt werden. Die Konstante wird im Grunde nur beim Compilieren (Übersetzen) verwendet ..... und die KEY_ID_MAX mit aufgenommen. Als Eingang direkt nutzen ging nicht aber als Constant.
würde nicht array[*] funktionieren und dann lower bound und upper bound berechnen über den Wert am Eingang?Das liegt daran, dass du den Eingang ja jederzeit ändern kannst - Array's können aber nicht dynamisch erzeugt werden. Die Konstante wird im Grunde nur beim Compilieren (Übersetzen) verwendet ...
weiß ich nicht - habe ich noch nie probiert ...würde nicht array[*] funktionieren und dann lower bound und upper bound berechnen über den Wert am Eingang?
Programmierstyleguide: Verwende nicht "magic numbers" sondern "sprechende Konstanten" (oder so ähnlich)Dann würde es mir eigentlich nicht so viel bringen den über die Konstante dann festzulegen oder?
Nein, der Speicherbereich wird nicht wirklich "dynamisch" belegt, weil ja alle Arraygrößen bereits beim Kompilieren feststehen.weiß ich nicht - habe ich noch nie probiert ...
Das würde dann aber heißen, dass der Speicherbereich dynamisch belegt wird ... (und das könnte sich dann ja auch von Zyklus zu Zyklus ändern)
IF #"Anlage_EIN" AND #sekundentakt_FP AND #Produkt = 1
THEN
FOR #i := 1 TO #KEY_ID_MAX BY 1 DO
IF #KeyNummer = #i
THEN
#BTZ_S_Produkt1_Key[#i] := #BTZ_S_Produkt1_Key[#i] + 1;
EXIT;
END_IF;
END_FOR;
END_IF;// Sekundenzähler Tageswert Stufe 1
IF #"Anlage_EIN" AND #sekundentakt_FP AND #Produkt = 2
THEN
FOR #i := 1 TO #KEY_ID_MAX BY 1 DO
IF #KeyNummer = #i
THEN
#BTZ_S_Produkt2_Key[#i] := #BTZ_S_Produkt2_Key[#i] + 1;
EXIT;
END_IF;
END_FOR;
END_IF;// Sekundenzähler Tageswert Stufe 2
IF #"Anlage_EIN" AND #sekundentakt_FP AND #Produkt = 3
THEN
FOR #i := 1 TO #KEY_ID_MAX BY 1 DO
IF #KeyNummer = #i
THEN
#BTZ_S_Produkt2_Key_1[#i] := #BTZ_S_Produkt2_Key_1[#i] + 1;
EXIT;
END_IF;
END_FOR;
END_IF;// Sekundenzähler Tageswert Stufe 3
IF #"Reset_Tageswerte"
THEN
FOR #i2 := 1 TO #KEY_ID_MAX BY 1 DO
#BTZ_S_Produkt1_Key[#i2] := 0;
#BTZ_S_Produkt2_Key[#i2] := 0;
#BTZ_S_Produkt2_Key_1[#i2] := 0;
EXIT;
END_FOR;
END_IF;
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?