@bo90411
Wie du richtig erkannt hast:
Es ist *IMHO* nicht möglich Scriptvariablennamen mittels String Concatenation zusammenzusetzen und dann auf den Wert derselben zuzugreifen.
Eine Möglichkeit dein Ziel zu erreichen wäre natürlich die Temperaturen in einer Liste zu schreiben wie in deinem Versuch.
Bitte folgendes nur als Hinweis verstehen
- es gibt eine automatische Typumwandlung - real pos1 = 20; macht pos1 nicht zum real nur weil es davor steht, es bleibt ein Integer
- Mittels String Concatenation eine Liste zusammenzusetzen ist nicht nötig oder ein unnötiger Umweg. Dann schreib gleich die Temperaturen in die Liste
- ^^ die liste ist ein string
- wenn du TAB als Trenner innerhalb einer Liste benutzt brauchst du StrValueByIndex nicht
- while ist nicht nötig zum Auslesen einer Liste
- das Ergebnis von .StrValueByIndex() ist ein string
- .StrValueByIndex() mit 2 oder mehr Buchstaben funktioniert nicht - nicht erst angewöhnen
- trotzdem,wie du ja siehst, funktioniert deine Version trotzdem.
Es gibt immer verschiedene Weg zum Ziel
[EDIT]
schnell mal zusammengepinselt, bevor es Haue gibt
Code: Alles auswählen
! Systemvariablen Zahl zz_hk1 bis zz_hk4 mit Werten aus Liste füllen
! Liste der Temperaturen pro Heizkoerper
string liste_hktag = "20.0\t21.0\t22.0\t23.0\t24.0";
string index;integer i =0;
foreach (index,liste_hktag)
{
i=i+1;
if ( (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("zz_hk"#i) ) { dom.GetObject(ID_SYSTEM_VARIABLES).Get("zz_hk"#i).State( (index.ToFloat())); WriteLine("Wert: "#index.ToFloat()#" in Variable: " #"zz_hk"#i #" eingetragen");}else{WriteLine("Achtung: Variable: " #"zz_hk"#i #" : für den Wert: "#index.ToFloat()#" nicht vorhanden");}
}
[/EDIT]
Alchy