Stapel-Platzhalter per [Stapel(ID).X]: (Beispiele)
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 [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 (s.u.).
Es können beliebig viele Stapel verwendet werden, die in den Platzhaltern durch die in Klammern angegebene ID adressiert werden.
.Ablesen | Lesen: Nächsten Eintrag vom Stapel ablesen (nicht entfernen) |
.Abnehmen | Lesen: Nächsten Eintrag vom Stapel nehmen (und entfernen) |
.AktuellerIndex | liefert Elementeindex bei [Stapel.VerarbeiteMit] verarbeitetes oder als Duplikat erkanntes Listenelement |
.Anhängen | Setzen: Stapelinhalt aus zusammengesetzter Liste ergänzen; optional kann ein Trennzeichen angegeben werden, etwa [Stapel(x).Anhängen(;)] |
.Anzahl | Lesen: Anzahl Einträge auf Stapel Setzen auf 1...n: löscht überzählige Einträge bzw. fügt fehlende als Leereinträge hinzu |
.Auflegen | Setzen: Wert auf Stapel legen |
.Löschen | Lesen/Setzen: Stapel leeren und ggf. Anzahl liefern |
.Löschen(n) | Lesen/Setzen: Eintrag n aus dem Stapel löschen und ggf. alten Wert liefern |
.LetzterFehler | Lesen: Nummer des zuletzt aufgetretenen Fehlers 1=Überlauf, 2=ungültiger Index, 3=keine Daten |
.Einfügen(n) | Setzen: Wert in Stapel an Position n einfügen (n>0: hinter n, n<0: vor -n) |
.Anhängen | Setzen: Wert an Stapel anhängen |
.Entfernen | Setzen auf Maske(n) löscht alle dazu passenden Einträge |
.Filtern | Setzen auf Maske(n) löscht alle nicht dazu passenden Einträge Für beide gilt: Masken 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 ![]() *** Druckerliste filtern und anzeigen Setze in [Stapel(Drucker).Liste]: '[Drucker.Liste]' Setze in [Stapel(Drucker).Filtern]: 'Microsoft*' Meldung "[Stapel(Drucker).Liste]" (Titel: 'MS-Drucker', Info, OK) **cX400453 F94FCDS1F4 2CMQkwCQkg RHJ1Y2tlcm xpc3RlIGZp bHRlcm4gdW 5kIGFuemVp Z2VuDQoyMg kwCQkgW0Ry dWNrZXIuTG lzdGVdCT1T dGFwZWwoRH J1Y2tlciku TGlzdGUNCj IyCTAJCSBN aWNyb3NvZn QqCT1TdGFw ZWwoRHJ1Y2 tlcikuRmls dGVybg0KMw kwCQlNNjQJ QjAJVE1TLU RydWNrZXIJ IFtTdGFwZW woRHJ1Y2tl cikuTGlzdG VdDQo==* |
.MaximalAnzahl | Lesen/Setzen: Maximale Anzahl Elemente auf dem Stapel (0=beliebig) |
.Sortieren | Setzen zum Sortieren: 0=mischen, 1=alphanumerisch aufsteigend, -1=absteigend, 2=numerisch aufsteigend, -2=absteigend |
.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 [Stapel(ID).AktuellesElement] |
.LöscheDuplikate | Setzen auf 0 (erlaubt), 1 (nicht erlaubt) oder 2 (nicht erlaubt, Groß-/Kleinschreibung berücksichtigen) |
.Tauschen | Setzen auf X;Y tauscht die Einträge mit den Indices X und Y aus |
.Zufallszahlen | Setzen auf X;Y;Z füllt den Stapel mit x Zufallszahlen zwischen Z (optional, Standard=1) bis Y |
.Suchen(X) | Lesen zum Suchen der Stapeleintragnummer, die zum Suchbegriff X passt (* und ? möglich) |
.SuchenAb(n;X) | Suchen nach zu X passendem Wert (Wildcards möglich) ab Eintrag n; Ergebnis 0 für "nicht gefunden" bzw. Werteindex |
.Typ | Lesen/Setzen: Typ des Stapels x: 0=LIFO (zuletzt aufgelegter Wert wird zuerst abgenommen), 1=FIFO (zuerst abgelegter Wert wird zuerst abgenommen) |
.Wert(n) | Lesen/Setzen: Eintrag Nummer n vom Stapel auslesen (nicht entfernen) bzw. setzen, wobei n auch eine Formel sein kann Beispiel: [Stapel(ID).Wert 1+1] liest den 2. Wert aus dem Stapel, Setze in [Stapel(Teststapel).Wert(1+1)]: 'Wert2' legt ihn fest |
.Liste | Lesen/Setzen: Stapelinhalt als zusammengesetzte Liste; optional kann ein Trennzeichen angegeben werden, etwa [Stapel(x).Liste(;)] Diese Liste kann etwa in eine Datei geschrieben bzw. aus einer Datei ausgelesen werden |
.ListeFilter X | Gefilterter Stapelinhalt als zusammengesetzte Liste; als Filter wird eine Vergleichsmaske angegeben, etwa [Stapel(x).ListeFilter A*] |
.Serialisiert | Liest/Setzt den gesamten Inhalt des Stapels als serialisierte Zeichenkette (kompatibel zu [Var(x)._Serialisiert]) |
.Summe | Liefert die Summe der numerischen Stapelwerte |
.Maximum | Liefert den größten numerischen Wert auf dem Stapel |
.Minimum | Liefert den kleinsten numerischen Wert auf dem Stapel |
.Längster | Liefert den längsten Eintrag auf dem Stapel |
.Kleinster | Liefert den kürzesten Eintrag auf dem Stapel |
.AktuellesElement | gibt das aktuelle Element bei der Verarbeitung oder in Fehlern an |
.VerarbeiteMit | bearbeitet alle Einträge im Stapel mit der gesetzten Formel; [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. Beispiel: Setze in [Stapel(Test).VerarbeiteMit]: '[Rechne([Stapel(Test).AktuellesElement] * 2)]' |
.VergleicheMitStapel(ID, Trennzeichen)
vergleicht diesen Stapel mit Stapel(ID) und liefert Vergleichsliste der Stapelelemente, getrennt mit dem Trennzeichen
Folgende Ereignisse können vom Stapel ausgelöst werden:
::Stapel(ID)_Gelesen | bei Auslesen aus dem Stapel (ohne Veränderung) |
::Stapel(ID)_Verändert | bei Veränderungen im Stapel |
::Stapel(ID)_Fehler | Zugriffsfehler, etwa bei Überschreitung des Maximums (falls angegeben) - siehe .LetzterFehler |
::Stapel(ID)_Duplikat | Es wurde ein unerwünschtes doppeltes Element aufgelegt (siehe .KeineDuplikate) |
cX-Webseite: http://www.clickexe.de