CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiTree / Erweiterung des Baums /
CxiError CxiTree :: NewSub (CxiName pname, CxiLong psize = 0)
CxiError cxiNewSub (CxiHandle self, CxiName pname, CxiLong psize)
Erstellt eine neue leere Unterbaum-Variable im aktuellen Sichtfenster (einen CHILD-Knoten bzw. ein "Subdirectory", einen "Unterordner")
pname:
Name der Variablen
psize:
Anfängliche Größe des neuen Knotens, 0 für Standardgröße
return:
0 ok, sonst Fehler
Der Wert psize wird vom CXI-System auf ein Vielfaches der internen Blockgröße aufgerundet; er sollte angegeben werden, wenn der Platzbedarf des neuen Knotens bekannt ist, um nachträgliche Reallokationen des Knotens auf dem Speichermedium zu vermeiden.
Beim Aufruf mit psize=0 (Vorgabe) legt die Funktion einen Knoten mit Standardgröße an; meistens ist die Standardgröße gleich der Minimalgröße.
Eine Unterbaum-Variable ist eine normale Variable und kann als solche behandelt werden, z.B. geschieht das Löschen einer solchen Variablen mit DeleteVar.
Vorsicht! NewSub erstellt in jedem Fall einen NEUEN leeren CXI-Knoten mit dem angegebenen Namen. Existiert bereits eine Variable pname, so wird sie vollständig überschrieben, auch wenn es sich um eine Variable des Typs cxiTypeSub handelt.
Die neue Unterbaum-Variable wird nur angelegt, sie wird nicht zum neuen Sichtfenster. Dazu ist anschließend MoveDown(pname) aufzurufen oder direkt die kombinierte Funktion MoveDownAuto zu verwenden.
Unterbaum-Variablen werden nie über Resource-Referenzen aufgelöst.
Portabilität:
Diese Funktion ist in allen unterstützten Systemen verfügbar.
Siehe auch:
MoveDownAuto
MovePathAuto
MoveDown
MoveUp
MoveHome
MoveNext
MovePath
MovePop
Beispiel:
#include "cxib.h"
int main ()
{
CxiTreeMem a;
// Erstellt die unten abgebildete Struktur
a.NewSub ("Knoten1"); // Knoten1 anlegen
a.NewSub ("Knoten2"); // Knoten2 anlegen
a.MoveDown ("Knoten1"); // Wechsel nach Knoten1
a.Push (); // Position (Knoten1) sichern
a.MoveDownAuto ("Knoten3");// Knoten3 anlegen und dorthin wechseln
a.SetNum ("VariableInKnoten3", 4713);
a.MovePop (); // Zurück nach Knoten1
a.NewSub ("Knoten4"); // Knoten4 anlegen
a.MovePath ("\\Knoten2"); // Direkter Wechsel nach Knoten2
a.NewSub ("Knoten5"); // Knoten5 anlegen
a.MoveUp (); // Wechseln zum Elternknoten
// Sichtfenster ist jetzt die Wurzel
// Löschen Unterbaum Knoten2 und Knoten5
a.DeleteVar ("Knoten2");
// Doch nicht löschen
a.Undo ();
// Löschen Unterbaum Knoten1, Knoten3 und Knoten4
a.DeleteVar ("Knoten1");
// Löschung endgültig machen
a.Flush ();
// ...
return 0;
}
Erzeugte Struktur: