Navigation: Platzhalter und Variablen > Platzhalter Premium-Lizenz >

Platzhalter: Var

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

FG Eigene und mächtige Variablenverwaltung mit [cX.Var(ID).X]:

 

Mit diesen Platzhaltern können eigene Variablenbereiche definiert, flexibel verwendet, gespeichert und geladen, serialisiert sowie gemeinsam gelöscht werden.

Ein solcher Bereich kann auch sehr gut zum Ablegen von Programmeinstellungen verwendet werden, da die Einstellungen beliebig sein können und das Sichern/Wiederherstellen dieser Einstellungen direkt unterstützt wird.

 

Für die Einträge können auch Datentypen definiert werden. Neben den typisierten Exportmöglichkeiten (z.B. für den Datenaustausch mit Webdiensten per JSON) ist dadurch auch eine echte binäre Ausgabe möglich, was etwa manchmal für die Übergabe von binären Strukturen an DLL-Aufrufe benötigt wird.

 

Der Datentyp des Eintrags kann durch das Anhängen eines speziellen Zeichens an den Wertenamen (Postfix) bestimmt werden. Dieser wird beim Schreiben überprüft. Bei einem ungültige Wert wie z.B. "AB" für ein Zahlenfeld wird das Fehlerereignis ::Var_Formatfehler bzw. ::Var(ID)_Formatfehler aufgerufen, welches einen neuen Wert für den Eintrag zurückliefern kann. Andernfalls bleibt der Eintrag unverändert.

Mögliche Typen-Postfixe sind:

% = ganzzahliger Wert (32bit Integer)
> = ganzzahlige 16bit-Werte
< = ganzzahlige 8bit-Werte (Bytes)
! = Fließkommazahl
# = Datum/Uhrzeit
? = Ja/Nein-Eintrag (Boolean)

 

Sondertypen für _Editieren:

- = interner, anonymer Eintrag, welcher nicht im Editor von [cX.Var()._Editieren()] aufgeführt ist
: = mehrzeiliger Text
| = Liste mit Texten für eine Dropdown-Liste bei "_Editieren" (kein "echter" Datentyp) mit einem Wert als Liste mit Einträgen, wobei
ein mit "!" beginnender Eintrag vorausgewählt wird oder
ein mit ":" beginnender Eintrag der (editierbare) Vorgabe-Text bei einer Kombinationsliste ist.

 

Datentypen spielen neben der Werteprüfung auch eine Rolle bei der typisierten Serialisierung (siehe ._JSON) oder dem Editieren der Inhalte (siehe ._Editieren()).

 

Einzelne Einträge können auch ihrerseits Listen sein, auf deren Eintrag Nummer X dann direkt per [cX.Var().Eintrag(X)] zugegriffen werden kann. Die Anzahl der Elemente in einem Listeneintrag kann per .[cX.Var()._Max(Eintrag)] ermittelt werden.

 

Folgende Platzhalter stehen als [cX.Var(ID).X] zur Verfügung:

 

.XZugriff auf den Wert X (Name oder Index 1..._Anzahl)
._AnzahlAnzahl der Werte im Variablenbereich ID
._Eintrag(Index)Zugriff auf den per Index (Name oder numerischer Index 0..n) angegebenen Eintrag (alternative Schreibweise).
Wird ein ungültiger Wert in einen mit Datentyp versehenen Eintrag geschrieben, wird das Fehlerereignis ::Var_Formatfehler aufgerufen.
._Name(Index)Ermitteln des Eintragsnamens an der per Index angegebenen Position
._FehlerFeldName des Feldes, in das zuletzt ein ungültiger Wert eingetragen werden sollte

 

._Editieren(X)das Lesen dieses Platzhalters erstellt ein Eingabeformular für die Bearbeitung der enthaltenen Felder. Als Ergebnis wird 0 bei Abbruch und 1 bei der Bestätigung des Formulars durch den Anwender geliefert.
Definierte Datentypen werden geprüft und berücksichtigt, anonyme Einträge (mit - am Ende) werden nicht aufgeführt.
Als Index X kann hier der Dialogtitel angegeben werden, optional gefolgt von Breite;X;Y. Zusätzlich können ein oder zwei Buttontexte angegeben werden, wodurch weitere Buttons in dem Dialog erscheinen, deren Klick dann in den Ereignissen ::Var()_ExtraButton bzw. _ExtraButton2 gemeldet wird.

 

._Histogramm(Modus;Text) Liefert eine Liste aller unterschiedlichen Einträge mit Anzahl.
Zum Modus siehe [cX.Stapel().Histogramm].

 

._Max(Name)Ermitteln der Anzahl Einträge des Listeneintrags Name
._Name(Index)Ermitteln des Eintragsnamens an der per Index angegebenen Position

 

._LeerenSetzen auf: kein Inhalt, um alle Werte in Variablenbereich ID zu löschen, Wertename/-index zum Löschen eines einzelnen Eintrags oder Namensmaske für mehrere Elemente. Die Elemente bleiben erhalten, nur die Inhalte werden zurückgesetzt (siehe auch ._Löschen)
._LöschenSetzen auf: kein Inhalt, um alle Einträge in Variablenbereich ID zu löschen, Wertename/-index zum Löschen eines einzelnen Eintrags oder Namensmaske für mehrere Elemente. Die Elemente werden samt Inhalt aus der Liste entfernt (siehe auch ._Leeren)

 

._Laden(Modus)Setzen auf Dateinamen: Laden des mit _Speichern gespeicherten Variablenbereichs ID
._Speichern(Modus)Setzen auf Dateiname speichert den Dateninhalt in die Datei als Name=Wert-Liste
In Modus kann jeweils der Datentyp angegeben werden (siehe unten bei _Serialisiert)

 

._Liste(Modus)Setzen auf eine mehrzeilige Liste mit Variablenname=Wert legt mehrere Inhalte auf einmal fest,
Lesen liefert eine entsprechende Liste aller enthaltenen Variablen (auch z.B. nutzbar für Mehrfach-Setzen)
Beim Lesen liefert Modus=1 nur die Namen, 2 nur die Werte. Wird hier 4 addiert, ergibt das eine sortierte Liste.

 

 

._KopiereAusSkriptSetzen kopiert alle Benutzervariablen aus den Skriptvariablen in das Objekt
(nur normale Variablen, keine Unterobjekte wie cX.Var- oder cX.Stapel)
._KopiereInSkriptSetzen kopiert alle Benutzervariablen aus dem Objekt in die Skriptvariablen
Mit diesen beiden Funktionen kann etwa eine Kopie der aktuellen Variableninhalte im Skript gesichert und wiederhergestellt werden.

 

._KopiereAusSkriptSetzen auf Maske (oder leer) kopiert alle passenden (oder alle) Variablen aus den Skriptvariablen in das zuvor geleerte Objekt
._KopiereInSkriptSetzen auf Maske (oder leer) kopiert alle passenden (oder alle) Variablen aus dem Objekt in die (zuvor geleerten) Skriptvariablen
Hinweis: Mit diesen beiden Funktionen können beispielsweise erst alle Variablen gesichert und dann ein Var-Inhalt in die cX-Variablen überspielt werden. Danach könnte ein Vorlagen-Text, in dem die Var-Felder einfach als [Variablen] enthalten sind, direkt mit den Inhalten des Var-Objekts ausgefüllt werden (einfacher als jede Variable mit [cX.Var([VarId]).Feld] o.ä. auszuschreiben und die passende [VarId] zu setzen)..

 

._SerialisiertLesen/Schreiben des Gesamtinhalts als BASE64-codierte Zeichenkette (mit Präfix "cXV5"), etwa für das Abspeichern/Wiederherstellen der Daten
Optional kann noch als Index ein anderes Format gewählt werden (als Zahl oder Format-Name):
1/CX4=cX4-kompatibles Format, 2/XML=XML, 3/JSON=JSON, 4/BIN=Binär (nur Lesen), 5/LIST=Liste, 6/CSV=CSV, 7/Z64=Komprimierter Inhalt als Base64, 8;Abschnitt=INI-Abschnitt (nur Schreiben), sonst cX5-Format
Die Formate XML und JSON eigenen sich etwa  für das Abspeichern/Wiederherstellen der Daten oder den Datenaustausch mit Webdiensten.

 

._Suche(Name;Wert;Maske)Durchsucht alle definierten Var()-Objekte und liefert die ID des ersten, bei dem das angegebene Paar existiert.
Der Wert kann als Maske angegeben werden.
Optional kann noch eine Maske für die IDs der Var()-Objekte angegeben werden, welche durchsucht werden sollen.
._SucheID(Wertemaske)Liefert die erste ID des Eintrags, dessen Wert der angegebenen Maske entspricht.
Optional kann mit zusätzlichem ;1 eine Liste aller passenden Eintrags-IDs angefordert werden.
Wird ein dritter Parameter angegeben, ist dies der Maximalwert (Zahl oder Datum), wobei alle Einträge zwischen dem als Maske angegebenen Wert oder Datum und diesem ermittelt werden (etwa [cX.Var()._SucheID(20;1;30)] für alle IDs (1) mit Werten von 20 bis 30).

 

._UnterschiedZu(Index)Vergleicht den Var-Inhalt mit einem anderen per Index (ID des Vergleichs-Var) angegebenen und liefert eine Liste der Feldnamen, bei denen im anderen Var-Objekt der Inhalt abweicht oder nicht existiert. Existiert das andere Var-Objekt nicht, wird ein Fehler ausgelöst.

 

 

Beispiel:

***  Demo der Var()-Objekte

***  Einträge in [cX.Var(Zahlen)] einsetzen

  Setze  in [cX.Var(Zahlen).Zahl1]:  'Eins'

  Setze  in [cX.Var(Zahlen).Zahl2]:  'Zwei'

  Setze  in [cX.Var(Zahlen).Zahl3]:  'Drei'

  

(   Setze  in [cX.Var(Zahlen)._Löschen]:  'Zahl2'

  

(   Setze  in [cX.Var(Zahlen)._Speichern]:  'TestSammlung.cxv'

(   Setze  in [cX.Var(Zahlen)._Laden]:  'TestSammlung.cxv'

  

***  Einträge aus [cX.Var(Zahlen)] holen

  Meldung  "Anzahl: [cX.Var(Zahlen)._Anzahl]¶Zahl 1: [cX.Var(Zahlen).Zahl1]  =  [cX.Var(Zahlen).1]¶Zahl 2: [cX.Var(Zahlen).Zahl2]  =  [cX.Var(Zahlen).2]¶Zahl 3: [cX.Var(Zahlen).Zahl3]  =  [cX.Var(Zahlen).3]" (Titel: 'Info', Info, OK)

 

Das Beispielskript zeigt, wie Var-Objekte zum Ablegen und Zugreifen auf Daten eingesetzt werden können. Die auskommentierten Zeilen stellen zudem noch andere Möglichkeiten vor, etwa das Löschen eines Eintrags aus der Liste oder das Speichern bzw. Laden des Inhalts.

 

 

Beispiel für _Editieren:

*** Beispielskript für das Bearbeiten eines Var-Eintrags in einem generierten Eingabedialog 

 

*** Var-Element erstellen und füllen 

Setze in [cX.Var(Test1)._Liste]: 'Name=Dittrich¶Vorname=Stefan¶Registriert?=0¶Kundennr%=123¶Datum#=1.1.2017¶Guthaben!=123,4¶InterneNummer-=12345¶Combo|=:T...' 

*** Inhalt per generiertem Formular bearbeiten und Ergebnis anzeigen 

Wenn (? '[cX.Var(Test1)._Editieren(Eintrag bearbeiten)]=1')

  Meldung '[cX.Var(Test1)._Liste]', Titel 'Ergebnis nach Änderung:', Buttons 'OK, Abbrechen', Symbol 'Information'

Ende Wenn

 

Das Beispielskript zeigt, wie ein Var-Objekt mit verschiedenen Datentypen im Editierfenster angezeigt bzw. bearbeitet werden.

 

Beispiel als cX4Web-Code:

**cx5AR-LC AAAAAAABAC 1VM2OEkEQv pv4DsVsNEv Czw6uMQF6j QgqUfcghJC YjelhipnO9 vRMunuyi-H oo_gY3ngxq 5ufIRyWePA C9dddX331T fcnCy0Ke_P 8GUD_fSltq fEmxn57b28 TeZZxFRvvV T7s_qerAln gHFQ2gCk-W hYMUJhCoDT 3rgEsN380x NzAALmOUFh UgEKhgRnXz ZFQVvPEgNh GM0hQoRaoX R1lEx5hLLj MkwDaT8IYZ YVdnSs6weo hSHQhQG0sS kltSzpFsJ3 9j_d9EuqBx u-62QSPJK5 BGOsngy9kI VzW5izBh83 vVNoGdOeMb ojypjteb8A 9eh6IAyvFI kUNQ05E2FV xDsgE7b5nc OjOgsW8Rc7 lFI0N660fH kNAJ5W7lQW 3PEM2FNZq6 vby4nHYo59 3vVmulctML C65quLfMKE L_Hbesqsq_ pkYQ6X0CxZ 2XlVhwl5mF yxsha3OVfi mSnwsbUp7V TVX37iuEmP CpRXelsSqb rrs9esq66l as64jq7dTT rg3OnvjCIA fd80OpbUna gdoFqlGEZU q6RInJNDd6 sCx9z_UN1Y plxYKWnOl- gw-5DorJdc QVV-Mk-RIJ xgpYYCrn14 jZzVhubbjp d93LKzI1TY eHkVmXJYU- n4ilJHLokZ 1uWPqCEz9j oXnWn9FY3h CUpsK63R4w K74IoXNL9K LdkTvqTjt7 zd3d5Z0Fbv xtkX0dFWvV b-9e9_-Ags 977noBAAA= *

 


 

Stapel-Platzhalter

Andere Platzhalter

Platzhalter für cXtensionen

DLL-Aufrufe

 

 

 


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