In click.EXE 5.0 können diverse Funktionen auf Listen angewandt werden, um den Umgang mit Datenmengen zu vereinfachen.
Als Liste wird ein Text bezeichnet, der mit einem definierten Zeichen getrennte Teile enthält.
Wenn nicht anders angegeben, wird als Trennzeichen erkannt: (in dieser Reihenfolge):
Zeilenumbruch (^M bzw. ¶), Tabulator (^T), Semikolon (;)
Hinweis: Sehr vielseitige Instrumente für die Verarbeitung von Listen sind auch der Stapel oder das Var-Objekt .
Einige der Systemplatzhalter liefern eine Liste als Ergebnis (teilweise nur in speziellen Lizenzstufen), etwa:
[cX.Anzeige.Liste(ID).X] | Mit diesen Platzhaltern kann auf den Inhalt von Listenelementen (z.B. Liste, Listenansicht, Register, Baum) im Fenster zugegriffen werden. |
[cX.Datei.Liste(X)] | liefert eine Liste der zum Parameter passenden Dateien |
[cX.Datei.SucheListe] | enthält alle Dateien der letzten entsprechenden Dateisuche |
[cX.Fenster.Liste] | liefert eine Liste der sichtbaren Fenstertitel bzw. -texte |
[cX.Prozess.Liste] | liefert eine Liste (Komma-separiert) mit allen Prozess-IDs; optional kann eine Maske für die Namen angegeben werden |
[cX.Drucker.Liste] | liefert eine Liste aller installierten Drucker |
[cX.Stapel(ID).Liste] | Lesen/Setzen: Stapelinhalt als zusammengesetzte Liste; optional kann ein Trennzeichen angegeben werden, etwa [cX.Stapel(x).Liste(;)] Hinweis: Der Stapel eignet sich auch hervorragend für die Verarbeitung von Listen! |
[cX.Var(ID)._Eigenschaften] | Lesen/Schreiben des Gesamtinhalts eines Variablenobjekts als Zuweisungsliste (s.u.) |
[cX.DragDrop.DateiListe] | liefert eine Liste aller per Drag&Drop verschobenen Dateien |
[.Liste(ListenID).Liste] | liefert/setzt den gesamten Inhalt des Listenelements als Liste |
[.Liste(ListenID).Markierte] | liefert eine ;-separierte Liste der markierten Einträge (bei Mehrfachauswahl) |
[cX.Zufallsliste(X)] | liefert eine Liste mit Zufallszahlen zwischen 0 und X (ohne Duplikate) |
Auch bei einigen PlugIn-Befehlen wie etwa Datenbank oder Internet können Daten als Liste ausgelesen und/oder zurückgeschrieben werden.
Zusätzlich stehen spezielle Platzhalter zur Verfügung, um die Auswertung von Listen zu vereinfachen, etwa:
[cX.AnzahlEinträge(Trenner;Liste)] | Anzahl Einträge in der mit 'Trenner' (leer = Standard) getrennten Liste ermitteln |
[cX.ZeilenAnzahl(Liste)] | Anzahl Zeilen in der Liste ermitteln |
[cX.ZeileAus(Nummer;Liste)] | Zeile 'Nummer' (1-n) aus der Liste holen |
[cX.ZeileLöschen(Nummer;Liste)] | Zeile 'Nummer' (1-n) aus der Liste löschen und Restliste zurückgeben |
[cX.EintragAusListe(Nummer;Trenner;Liste)]
Liefert Teil 'Nummer' (1-n) aus der Liste (etwa eine CSV-Zeile) holen, die mit Trenner getrennt sind (leer = Standard-Trenner). Die Teile können hier optional auch in Anführungszeichen stehen (""), wenn in ihnen das Trennzeichen vorkommt - die Anführungszeichen werden dann entfernt
Ist Nummer ein Text, wird der Wert der Name=Wert-Liste geliefert, bei der der Name dem angegebenen Text entspricht
Der Setze-Befehl kann dazu eingesetzt werden, mit Listen zu arbeiten bzw. sie mit einem einzigen Befehl Zeile für Zeile verarbeiten.
Die Pro-Lizenz bietet noch weitere mächtige Funktionen für den Umgang mit Listen, etwa:
• | Der Platzhalter-Bereich [cX.Stapel.X] eignet sich hervorragend dazu, Listen zu verarbeiten. Nach dem Befüllen bzw. Einlesen einer Liste in einen Stapel kann dieser analysiert und weiter bearbeitet werden, etwa sortiert, gemischt usw.. |
• | Mit der Spezialschleife lässt sich eine Schleife über alle Einträge der Liste durchlaufen. |
Ebenfalls sehr vielseitig ist der Platzhalter-Bereich [cX.Var(ID).X], in dem beliebige Variablen in Gruppen zusammengefasst und verwaltet werden können
Hierbei ist auch eine flexible Serialisierung möglich, etwa in XML, JSON usw..
Hinweis: Bei der Eingabe von Parametern in ein Eigenschaftsfeld kann auch ein komplexerer, mehrzeiliger Parameter (eben auch eine Liste) über die Taste [F7] in einem eigenen Dialog bearbeitet werden.
Es ergeben sich durch diese flexiblen Listen diverse Vorteile. So kann etwa das Ergebnis von [cX.Datei.Liste] (oder einer anderen Listenabfrage) direkt in eine Schleife, ein Listenelement oder ein Stapel()- oder Var()-Objekt etc. geschrieben werden, um dort angezeigt bzw. weiter verarbeitet zu werden. Ebenso kann der Inhalt eines kompletten Elements, welches seinen Inhalt als Liste anbietet, mit einem einzigen Befehl in eine Datei geschrieben bzw. wieder gelesen oder per Netzwerk weitergegeben werden.
Hinweis: Wird eine Liste dynamisch erstellt und enthält pro Zeile Semikolon-Trennzeichen (etwa bei der Definition von Popup-Menüs oder Listen-Elementen), kommt es bei nur einer einzelnen Zeile zu dem Problem, dass cX diese Zeile als Liste interpretiert. Um sicherzustellen, dass die Liste (die ggf. auch nur aus einer Zeile besteht) immer zeilenweise interpretiert wird, sollte am Ende der Listendefinition ein Zeilenumbruch (¶ im Listing) gesetzt werden.
Zuweisungslisten
Eine besondere Form von Listen sind die Zuweisungslisten, bei denen üblicherweise eine mehrzeilige Liste mit Name=Wert-Paaren angegeben wird. Solche Listen werden etwa für das Mehrfach-Setzen verwendet. Auch das [cX.Var()]-Element kann mit dieser Art Liste umgehen. Solche Listen können an verschiedenen Stellen gelesen und geschrieben werden.
Auch in diesem Fall lassen sich mit einem einzigen Befehl diese unterschiedlichen Funktionsbereiche kombinieren.
Hinweis: Sind in einem Wert Zeilenumbrüche enthalten, werden diese üblicherweise mit dem in click.EXE üblichen Sonderzeichen ¶ ersetzt, um die Name=Wert-Zeile einzeilig zu halten.
Sonderzeichen in Listen
Sollte in einer mit ; getrennten Liste ein Eintrag vorkommen, welcher selbst ein ; enthält, muss der gesamte Eintrag in "" gesetzt werden.
Beispiel: Soll der zweite Eintrag hier "Eintrag mit ;" lauten, dies jedoch nicht in Anführungszeichen stehen:
Eintrag 1;Eintrag mit ;;Eintrag3
so wird das ; in dem Eintrag ebenfalls als Trenner intepretiert, wodurch hier 4 Einträge ermittelt würden.
Richtig wäre hier also
Eintrag 1;"Eintrag mit ;";Eintrag3
Die Anführungszeichen werden später bei der Zerlegung der Liste automatisch entfernt.
cX-Webseite: http://www.clickexe.net