Dynamische Strukturen
Objekte für dynamische Strukturen Dynamische Listen und Bäume
Innerhalb von CONZEPT 16 können sogenannte dynamische Strukturen erzeugt werden. Diese Strukturen werden im Arbeitsspeicher des Clients erzeugt und verarbeitet und ermöglichen so das Generieren von temporären Mengen, die effizient durchsucht oder sortiert werden können.
Für diese Strukturen stehen vier verschiedene Objekte zur Verfügung:
CteItem -Objekt
CteItem-Objekte können als Informationsträger in einer Listen-Struktur in verketteten (CteList) und/oder sortierten Listen (CteTree) organisiert und verarbeitet werden:

Jedes CteItem-Objekt kann gleichzeitig in einem CteList-Objekt und einem CteTree-Objekt enthalten sein.
Das CteItem-Objekt verfügt über folgende Eigenschaften:
CteList -Objekt
CteList-Objekte dienen zur Organisation von Elementen in einer verketteten Liste. Als Elemente können beliebige Deskriptoren (außer den Deskriptoren von Storage - und Binären Objekten ) verwendet werden. Die Elemente sind nach ihrer Position sortiert.
Das CteList-Objekt ist für die sequenzielle Verarbeitung der darin enthaltenen Elemente ausgelegt. Die Liste kann mit der Anweisung CteRead () mit den Parametern _CteFirst, _CtePrev, _CteNext und _CteLast durchsucht werden. Es ist auch eine Suche über den Namen des Objekts möglich, kann aber in einem CteTree-Objekt wesentlich schneller durchgeführt werden.
Das CteList-Objekt verfügt über folgende Eigenschaften:
CteTree -Objekt
CteTree-Objekte dienen zur Organisation von Elementen in einer sortierten Liste. Als Elemente können beliebige Deskriptoren (außer den Deskriptoren von Storage - und Binären Objekten ) verwendet werden. Die Elemente sind nach ihrem Namen sortiert.
Innerhalb eines CteTree-Objekts darf der Name der Elemente nicht leer und muss eindeutig sein.
Das CteTree-Objekt ist für die Suche über den Namen der darin enthaltenen Elemente ausgelegt. Eine sequenzielle Verarbeitung kann in einem CteList-Objekt geringfügig schneller durchgeführt werden.
Das CteTree-Objekt verfügt über folgende Eigenschaften:
Für das CteTree-Objekt wird der sogenannte bichromate Baumtyp verwendet (auch als rot-schwarz-Baum bezeichnet), bei dem es sich um einen ausgeglichenen binären Baum handelt.
CteNode -Objekt
CteNode-Objekte können als Informationsträger in einer Baum-Struktur organisiert und verarbeitet werden.
Jedes CteNode-Objekt kann weitere CteNode-Objekte als untergeordnete Knoten (Child) und als Attributknoten (Attrib) enthalten. Die untergeordneten Objekte werden in eigenen Listen verwaltet. Alle Kinder eines Baumknotens befinden sich in der Child-Liste, alle Attribute in der Attribute-Liste. Da alle untergeordnete Objekte wiederum CteNode-Objekte sind, haben diese ebenfalls eine Child- und eine Attribute-Liste.

CteNode-Objekte können sowohl verkettet als auch sortiert organisiert und verarbeitet werden. Dazu kann in jedem CteNode-Objekt eine verkettete Liste und/oder eine sortierte Liste für untergeordneten Knoten und Attributknoten erzeugt werden.
Das CteNode-Objekt verfügt über folgende Eigenschaften:
Die Eigenschaften Type und Value... beinhalten die Knoteninformation, wobei die Eigenschaften Name, ID und Custom ebenfalls als Informationsträger verwendet werden können. Bei der Verwendung im Zusammenhang mit XML - und JSON -Daten wird die Eigenschaft ID zur Identifizierung des Knotentyps verwendet.
Mit der Anweisung CteRead () kann nicht die komplette Baumstruktur durchsucht werden. Die Anweisung durchsucht immer nur eine Ebene, entweder die Liste der Knoten in der nächsten Ebene (Child-List) oder die Liste der Attribute (Attribute-List) (siehe Beispiel - Durchsuchen einer XML-Struktur ).
Anwendungsbeispiele
- Temporäre Menge von Datensätzen Soll eine noch nicht näher bestimmte Anzahl von Datensätzen zur Weiterverarbeitung markiert werden, kann die Datensatz-ID oder der eindeutige Schlüsselwert des Datensatzes in eine Liste oder einen Baum eingefügt werden. Die Verarbeitung der Datensätze kann dann über die dynamische Struktur erfolgen. Die entsprechenden Datensätze können ebenfalls in erzeugten Datensatzpuffern (
RecBufCreate ()) gespeichert und in einer Liste oder einer sortierten Liste organisiert werden. - Beliebige temporäre Mengen Alle Daten, die aus mehreren Elementen bestehen, können mit Hilfe der dynamischen Strukturen zu temporären Mengen zusammengefasst werden. Sind die Datenmengen in den einzelnen Elementen so groß, dass sie nicht mehr in einem CteItem -Objekt gespeichert werden können, können Deskriptoren von globalen Datenbereichen , internen Texten usw. mit Hilfe der Anweisung
HdlLink ()an die CteItem-Objekte angehängt oder direkt mit der AnweisungCteInsert ()in eine Liste eingefügt werden. - Strukturierte Informationen Liegen die Informationen in einer Baumstruktur vor, wie zum Beispiel bei einem XML-Dokument, kann diese Struktur mit Hilfe der CteNode-Objekte nachgebildet werden.
- Variable Übergabe von Parametern an Funtionen Sollen einer Funktion bei jedem Aufruf eine andere Anzahl von Argumenten übergeben werden, können diese Argumente in einer Liste zusammengefasst und nur der Deskriptor der Liste der Funktion übergeben werden. Die übergebenen Listenelemente funktionieren in diesem Fall wie var-Parameter, da Änderungen in den CteItems ebenfalls in der aufrufenden Funktion zur Verfügung stehen. Sind die Elemente in einem CteTree organisiert, kann über den Namen des Arguments auf dessen Wert zugegriffen werden.