Zum Hauptinhalt springen

CteRead

obj -> CteRead(int1[, handle2[, alpha3]]) : handle

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von Clients mit Programmierschnittstelle Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service

Element/Knoten lesen

Details

Mit diesem Befehl können Elemente in einer dynamischen Struktur gelesen werden.

Folgende Suchmodi (int1) sind sowohl für Listen ( CteList und CteTree ) als auch für Knoten ( CteNode ) möglich:

Soll eine Liste eines CteNode-Objekts durchsucht werden, muss der Suchmodus mit einer der folgenden Konstanten kombiniert werden:

Ist bei _CtePrev oder _CteNext das Referenzelement nicht angegeben oder nicht in der Liste/dem Knoten (obj) enthalten, ist das Resultat 0.

Beispiel:

// Alle Elemente einer Liste durchlaufen
for tItem # tList->CteRead(_CteFirst);
loop tItem # tList->CteRead(_CteNext, tItem);
while (tItem != 0)
{
...
}

Diese Operationen können mit _CteSearch oder _CteSearchCI erweitert werden. Dabei wird der Name des Elements zusätzlich auf Ähnlichkeit mit (alpha3) überprüft und dadurch nach dem ersten Element gesucht, das dem Kriterium entspricht. Durch die zusätzliche Angabe von _CteCustom kann anstatt der Eigenschaft Name die Eigenschaft Custom überprüft werden.

Beispiele:

// Erstes Element mit Namen 'Test' lesen
tItem # tList->CteRead(_CteFirst | _CteSearch, 0, 'test');

// Letztes Element mit 'xyz' im Namen lesen
tItem # tList->CteRead(_CteLast | _CteSearch, 0, '*xyz*');

// Erstes Element nach tRefItem, dessen Name auf 'T' endet, lesen
tItem # tList->CteRead(_CteNext | _CteSearchCI, tRefItem, '*T');

// Erstes Element dessen Custom-Eigenschaft 'VID' enthält lesen
// (Groß/-Kleinschreibung wird nicht beachtet)
tItem # tList->CteRead(_CteFirst | _CteSearchCI | _CteCustom, 0, '*VID*');

Der direkte Zugriff über den Namen ist nur bei sortierten Listen ( CteTree ) und Knoten ( CteNode ) möglich. Dabei wird entweder der Name im Referenzelement (int2) oder der Name in (alpha3) als Suchwert verwendet, wobei (alpha3) Vorrang hat.

Folgende Suchmodi (int1) sind für sortierte Listen und Knoten mit sortierten Listen möglich:

  • _CteCmpL Element mit nächstkleinerem Namen lesen
  • _CteCmpLE Element mit gleichen oder nächstkleinerem Namen lesen
  • _CteCmpE Element mit gleichen Namen lesen
  • _CteCmpGE Element mit gleichen oder nächstgrößerem Namen lesen
  • _CteCmpG Element mit nächstgrößerem Namen lesen
info

Diese Modi können nicht mit _CteSearch , _CteSearchCI und _CteCustom kombiniert werden.

Beispiele:

// Element mit Namen von tRefItem lesen
tItem # tList->CteRead(_CteCmpE, tRefItem);

// Erstes Element, dessen Name mit 'M' anfängt, lesen
tItem # tList->CteRead(_CteCmpGE, 0, 'M');

Bei Knoten muss neben dem Suchmodus auch die zu durchsuchende Liste angebenen werden:

Beispiele:

// Ersten Knoten in verketteter Liste der untergeordneten Knoten suchen.
tNode # tNodeRoot->CteRead(_CteChildList | _CteFirst);

// Knoten in sortierter Liste der untergeordneten Knoten suchen mit Namen "child" suchen.
tNode # tNodeRoot->CteRead(_CteChildTree | _CteCmpE, 0, 'child');

// Knoten in sortierter Liste der Attributknoten mit Namen "attrib" suchen.
tNode # tNodeRoot->CteRead(_CteAttribTree | _CteCmpE, 0, 'attrib');

Für Bäume besteht zusätzlich die Möglichkeit mit _CteNodePath oder _CteNodePathCI einen Knoten über mehrere Ebenen zu suchen. Dabei wird immer die sortierte Liste des Knotens verwendet. Falls keine sortierte Liste vorhanden ist, wird die verkettete Liste durchsucht. Die Suchoptionen werden in der letzten Ebene angewendet.

Die Separatoren für die Suche mit _CteNodePath und _CteNodePathCI können über die Eigenschaften CteNodeSepPath und CteNodeSepAttrib des _Sys-Objekts eingestellt werden.

info

Diese Modi können nicht mit _CteCmpL , _CteCmpLE , _CteCmpE , _CteCmpGE und _CteCmpG kombiniert werden.

Beispiele:

// Untergeordneten Knoten mit Namen "child" im untergeordneten Knoten mit Namen "parent" suchen.
tNode # tNodeRoot->CteRead(_CteNodePath, 0, 'parent/child');

// Attributknoten mit Namen "attrib" im untergeordneten Knoten mit Namen "parent" suchen.
tNode # tNodeRoot->CteRead(_CteNodePath, 0, 'parent.attrib');

// Letzten untergeordneten Knoten dessen Name mit "child-" beginnt im ersten untergeordneten Knoten
// mit Namen "parent" suchen. (Groß/-Kleinschreibung wird nicht beachtet)
tNode # tNodeRoot->CteRead(_CteNodePathCI | _CteSearch | _CteLast, 0, 'parent/child-*');

Das Resultat bei allen Leseoperationen ist 0, wenn kein Element gefunden wurde, sonst wird der Deskriptor des gefundenen Elements zurückgegeben.

Mögliche Laufzeitfehler: