Navigation: Platzhalter und Variablen > Platzhalter Pro-Lizenz >

Platzhalter: Stapel

Diese Seite drucken
Vorherige Seite Nächste Seite
Zurück zur Kapitelübersicht

FG Stapel-Platzhalter per [cX.Stapel(ID).X]:

 

Diese Platzhalter ermöglichen das Ablegen und wieder Aufnehmen von Werten auf einen Stapel.

Beim Ablegen wird der Wert direkt auf den Stapel gelegt, beim Abnehmen wird der je nach Typ zuerst wieder auszulesende Wert gelesen und vom Stapel entfernt. Der Typ bestimmt die Reihenfolge, in der die Werte abgenommen werden sollen. Der direkte Zugriff auf Elemente kann auch per [cX.Stapel(ID).Wert(X)] erfolgen.

 

Ebenso können Stapel als Variablenfelder (Arrays) verwendet werden, da beliebige Zugriffe auf Elemente über einen Index möglich sind. Außerdem sind eine Vielzahl an Auswertungen und Bearbeitungsfunktionen für die im Stapel enthaltenen Daten verfügbar, was diesen Platzhalter zum "Schweizer Taschenmesser" für Datenlisten aller Art macht..

Es können beliebig viele Stapel verwendet werden, die in den Platzhaltern durch die in Klammern angegebene ID adressiert werden.

 

.AblesenLesen: Nächsten Eintrag vom Stapel ablesen (nicht entfernen, "Peek").
Als Index kann eine Bedingung für das Ablesen angegeben werden:
1=kleinster, 2=größter numerisch, 3=kleinster, 4=größter alpha, 5=kürzester, 6=längster
.AbnehmenLesen: Nächsten Eintrag vom Stapel nehmen (und entfernen, "Pop")
.HerausnehmenBestimmten Eintrag aus Stapel auslesen und löschen
Der optionale Index hat die gleiche Funktion wie oben bei .Ablesen

 

.AktuellerIndexliefert Elementeindex bei [cX.Stapel.VerarbeiteMit] verarbeitetes oder als Duplikat erkanntes Listenelement
.AktuellesElementAktuell bei [cX.Stapel.VerarbeiteMit] verarbeitetes oder als Duplikat abgelehntes Listenelement (Inhalt)

 

.AnhängenSetzen: Stapelinhalt aus zusammengesetzter Liste ergänzen (entspricht .Liste(-1))
.AnzahlLesen: Anzahl Einträge auf Stapel. Wird dabei eine Maske (z.B. Wert*) angegeben, wird die Anzahl der Elemente geliefert, die zu dieser Maske passen
Setzen auf 1...n: löscht überzählige Einträge bzw. fügt fehlende als Leereinträge hinzu
.AuflegenSetzen: Wert auf Stapel legen ("Push")

 

.DurchschnittErmittelt den Durchschnittswert der Werte auf dem Stapel.

 

.Einfügen(n)Setzen: Wert in Stapel an Position n einfügen (n>0: hinter n, n<0: vor -n)
.AnhängenSetzen: Wert an Stapel anhängen
.Ersetzen(X;Y).Ersetzen(X;Y) ersetzt alle X gegen Y und liefert die Anzahl der geänderten Elemente

 

.EntfernenSetzen auf Maske(n) löscht alle dazu passenden Einträge
.FilternSetzen auf Maske(n) löscht alle nicht dazu passenden Einträge
Für beide gilt:
Maske(n) mit Wildcards ohne Berücksichtigung der Groß-/Kleinschreibung, etwa
"ABC*" für alle mit "abc" beginnenden Einträge oder "A*;*O*" für alle Einträge, die mit A beginnen oder ein O enthalten
Anklicken, um das Beispiel anzuzeigenBeispiel: Gefilterte Druckerliste
***  Druckerliste filtern und anzeigen
Setze  in [cX.Stapel(Drucker).Liste]:  '[cX.Drucker.Liste]'
Setze  in [cX.Stapel(Drucker).Filtern]:  'Microsoft*'
Meldung  "[cX.Stapel(Drucker).Liste]" (Titel: 'MS-Drucker', Info, OK)
.FiltereMit$Setzen von [cX.Stapel.FiltereMit$] auf Ausdruck mit [cX.Stapel.AktuellesElement] entfernt alle Elemente vom Stapel, bei denen der Ausdruck 0 bzw. Falsch ergibt. Beispiel: Setzen auf [cX.Stapel.AktuellesElement]<100 entfernt alle Einträge ab dem Wert 100.
Die Formel darf nicht im Voraus berechnet werden, da sie vom Stapel selbst ausgewertet wird, daher das $.
Wahlweise kann auch eine Sprungmarke angegeben werden (beginnend mit ::), die eine Funktion zur Verarbeitung des Eintrags enthält und den Filterwert als Ergebnis zurückgibt

 

.Histogramm(Modus)Liefert eine Liste aller unterschiedlichen Einträge mit Anzahl.
Als Index kann der Modus angegeben werden:
0="Eintrag;Anzahl" sortiert nach Eintrag,
1="Anzahl;Eintrag" sortiert nach Anzahl,
2/3=rückwärts sortieren
+4=Groß-/Kleinschreibung ignorieren

 

.IDLiefert die ID des zuletzt aktiven Stapels (z.B. in Fehlerereignis)
.KeineDuplikate 0=Duplikate erlaubt, 1=nicht erlaubt, 2=nicht erlaubt (Groß-/Kleinschreibung berücksichtigen)
=> beim Auflegen von unerwünschten Duplikaten wird dann das Ereignis ::Stapel(ID)_Duplikat aufgerufen mit dem doppelten Wert in [cX.Stapel(ID).AktuellesElement]
.LetzterFehlerLesen: Nummer des zuletzt aufgetretenen Fehlers
1=Überlauf, 2=ungültiger Index, 3=keine Daten

 

.ListeSchreibt oder liest den Stapelinhalt als Liste. Optional kann als Parameter ein Index 1..n übergeben werden, ab dem die Liste erstellt wird, oder ein Trennzeichen (nicht-numerisch), bei dem nur die Textteile rechts von diesem Trennzeichen geliefert werden (für 2spaltige Listen)
.ListeFilter(X)Gefilterten Stapelinhalt als zusammengesetzte Liste liefern;
als Filter wird eine Vergleichsmaske angegeben, etwa [cX.Stapel(x).ListeFilter(A*)]
.ListeMit(Indices)Liste der Elemente mit den angegebenen Indices zusammenstellen (z.B. [cX.Stapel.ListeMit(2;3;6)])
.ListeVonBis(von;bis)Liste der Elemente ab/bis zum angegebenen Index zusammenstellen (z.B. [cX.Stapel.ListeVonBis(2;6)])

 

.LöscheDuplikateLöschen von Duplikaten durch Setzen auf 1 (Standard) oder 2 (Groß-/Kleinschreibung berücksichtigen)
Hinweis: Ändert nicht den KeineDuplikate-Modus des Stapels
.LöschenLesen/Setzen: Stapel leeren und ggf. alte Anzahl liefern
.Löschen(Index)Den angegebenen Eintrag aus der Liste löschen und beim Lesen den alten Wert liefern.
Optional kann als 2. Parameter die Anzahl der zu löschenden Einträge angegeben werden.

 

.MedianBerechnet den Median der Stapelwerte.

 

.SerialisiertFG Liest/Setzt den gesamten Inhalt des Stapels als BASE64-codierte Zeichenkette (Hinweis: Diese nicht mit cX4 kompatibel - s.u.)
Diese Zeichenkette kann etwa in eine Datei geschrieben bzw. aus einer Datei ausgelesen werden
Optional kann noch als Index ein anderes Format gewählt werden: 1=cX4-kompatibles Format, 2=XML, 3=JSON, 4=Binär (nur Lesen)
Die Formate XML und JSON eigenen sich etwa  für das Abspeichern/Wiederherstellen der Daten oder den Datenaustausch mit Webdiensten.
Siehe auch Var-Objekt
.SortierenSetzen zum Sortieren:
0=Mischen
1 oder leer=alphanumerisch aufsteigend (Standard), -1=absteigend,
2=numerisch aufsteigend, -2=absteigend,
3=der Länge nach aufsteigend, -3=absteigend
4=Datumswerte aufsteigend, -4=absteigend,

 

.SpalteHinzufügenListeninhalt als zusätzliche Spalte (mit ; getrennt) hinzufügen.

 

.StdAbweichung        Ermittelt die Standardabweichung der Werte auf dem Stapel.

 

.Suchen(X)Lesen zum Suchen der Stapeleintragnummer, die zum Suchbegriff X passt (Wildcards * und ? möglich), liefert 0 bei "nicht gefunden".
Optional kann der Parameter X um ;1 ergänzt werden, damit alle passenden Indices als Liste geliefert werden.
.SuchenAb(n;X)Suchen nach zu X passendem Wert (auch hier Wildcards möglich) ab Eintrag n; liefert 0 für "nicht gefunden" bzw. Werteindex

 

.SummeLiefert die numerische Summe der numerischen Stapelwerte
.MaximumLiefert den größten numerischen Wert auf dem Stapel
.MinimumLiefert den kleinsten numerischen Wert auf dem Stapel
.LängsterLiefert den längsten (Text-)Eintrag auf dem Stapel
.KleinsterLiefert den kürzesten (Text-)Eintrag auf dem Stapel

 

.TauschenSetzen auf X;Y tauscht die Einträge mit den Indices X und Y aus
.TypLesen/Setzen: Typ des Stapels x:
0=LIFO (zuletzt aufgelegter Wert wird zuerst abgenommen),
1=FIFO (zuerst abgelegter Wert wird zuerst abgenommen)

 

.VerarbeiteMit$bearbeitet alle Einträge im Stapel mit der gesetzten Formel; [cX.Stapel(ID).AktuellesElement] steht hierbei für das jeweils bearbeitete Element.
Die Formel darf nicht im Voraus berechnet werden, da sie vom Stapel selbst ausgewertet wird, daher das $.
Beispiel: Setze  in [cX.Stapel(Test).VerarbeiteMit$]:  '[cX.Rechne([cX.Stapel(Test).AktuellesElement] * 2)]'
Wahlweise kann auch eine Sprungmarke angegeben werden (beginnend mit ::), die eine Funktion zur Verarbeitung des Eintrags enthält (beispielsweise wie in obigem Beispiel) und den neuen Wert als Ergebnis zurückgibt.
Optional kann dabei ein Parameter mit angegeben werden, um zusätzliche Informationen an die Bearbeitungsfunktion zu übergeben. Wird also z.B. StapelwertBearbeiten(Test) angegeben und die Marke lautet ::StapelwertBearbeiten(Name), wird diese aufgerufen, wobei dann "Test" in der Variablen [Name] steht (siehe Funktionen). Wird als Ereignismarke dagegen nur StapelwertBearbeiten angegeben, wird ebenfalls die Marke ::StapelwertBearbeiten(Name) aufgerufen, wobei [Name] dann leer ist.

 

.VergleicheMit(Stapel-ID;Modus)
liefert eine Liste der Unterschiede zwischen den Einträgen dieses und des anderen Stapels. Als Modus kann gewählt werden:
0=Liste mit 1/0/-1 für kleiner/gleich/größer,
1=Differenz (numerisch),
2=nur Indices der Abweichungen
3=Anzahl Abweichungen
4=Liste der Elemente, die im 2. Stapel nicht vorkommen

 

.Wert(n)Eintrag Nummer n vom Stapel auslesen (nicht entfernen) bzw. setzen, wobei n auch eine Formel sein kann.
Sollten die Stapel-Einträge als Listen vorliegen, kann der Stapel als 2D-Liste verwendet werden und per [cX.Stapel.Wert(Zeile;Spalte)] auf die einzelnen Zellen zugegriffen werden
Beispiel: [cX.Stapel(ID).Wert 1+1] liest den 2. Wert aus dem Stapel, Setze in [cX.Stapel(Teststapel).Wert(1+1)]: 'Wert2' legt ihn fest

 

.ZeilenvorlageDefiniert eine Zeilenvorlage für die Ausgabe des Stapels als Liste, welche pro Zeile ausgewertet wird. Diese Vorlage sollte als $-Variable verwendet werden und [cX.Stapel.AktuellesElement] und/oder [cX.Stapel.AktuellerIndex] enthalten
.ZufallszahlenSetzen auf X;Y;Z füllt den Stapel mit x Zufallszahlen zwischen Z (optional, Standard=1) bis Y

 

 

Folgende Ereignisse können vom Stapel ausgelöst werden:

 

::Stapel(ID)_Gelesenbei Auslesen aus dem Stapel (ohne Veränderung)
::Stapel(ID)_Verändertbei Veränderungen im Stapel
::Stapel(ID)_Fehler Zugriffsfehler, etwa bei Überschreitung des Maximums (falls angegeben) - siehe .LetzterFehler
::Stapel(ID)_DuplikatEs wurde ein unerwünschtes doppeltes Element aufgelegt (siehe .KeineDuplikate)

 

 

 


cX-Webseite: http://www.clickexe.net