HM-Skript, Frage zur Beschränkung einer Liste
Verfasst: 17.04.2019, 10:19
Hallo,
ich möchte eine Art FIFO-Puffer programmieren. Sprich, es wird eine Liste aus einer Systemvariablen ausgelesen, dann soll ein neuer Eintrag an den Anfang der Liste geschrieben und der älteste Eintrag vom Ende der Liste entfernt werden. Die Liste soll beliebige Trennzeichen enthalten können. Bevorzugt wird "\n" zur schöneren Darstellung der Listeneinträge. Schließlich soll die Liste wieder in die Systemvariable geschrieben werden. Zusätzlich soll auch noch bestimmt werden können, wie viele alte Listeneinträge vom Ende der Liste entfernt werden.
Das Lesen aus und das Schreiben in die Systemvariable ist kein Thema. Auch nicht das Schreiben neuer Einträge in die Liste. Mir geht es eher um das Entfernen der Listeneinträge. Hab mir auch schon Gedanken dazu gemacht und ein simples Testskript geschrieben.
Funktioniert auch, wie gewollt. Aber muss man wirklich über eine foreach-Schleife gehen, oder fällt euch ggf. noch eine simplere und schnellere Lösung ein? Ein direkter Skriptbefehl zum Entfernen der n letzten oder ersten Listeneinträge ist mir ehrlich gesagt nicht bekannt. Oder könnte das mit .StrValueByIndex bzw. .Substr funktionieren?
Gruß,
Thorsten
ich möchte eine Art FIFO-Puffer programmieren. Sprich, es wird eine Liste aus einer Systemvariablen ausgelesen, dann soll ein neuer Eintrag an den Anfang der Liste geschrieben und der älteste Eintrag vom Ende der Liste entfernt werden. Die Liste soll beliebige Trennzeichen enthalten können. Bevorzugt wird "\n" zur schöneren Darstellung der Listeneinträge. Schließlich soll die Liste wieder in die Systemvariable geschrieben werden. Zusätzlich soll auch noch bestimmt werden können, wie viele alte Listeneinträge vom Ende der Liste entfernt werden.
Das Lesen aus und das Schreiben in die Systemvariable ist kein Thema. Auch nicht das Schreiben neuer Einträge in die Liste. Mir geht es eher um das Entfernen der Listeneinträge. Hab mir auch schon Gedanken dazu gemacht und ein simples Testskript geschrieben.
Code: Alles auswählen
string list = "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np";
integer numberOfElements = 6;
integer cnt = 0;
string listNew = ""; string listElement;
foreach(listElement, list.Split("\n")){
if(cnt < numberOfElements){listNew = listNew#listElement#"\n";}
cnt = cnt + 1;
}
WriteLine(listNew);
!Ausgabe: a\nb\nc\nd\ne\nf\n
Gruß,
Thorsten