GetDataField(char *name, ...)
void *GetDataField(char *name, short *n, CXS_ACCESS_PATH *path, short force = FALSE)
Parameter | Beschreibung |
---|---|
name | ein Zugriffsausdruck (Input) |
n | Anzahl der Terme im Zugriffspfad (Output) |
path | Zugriffspfad (Output) |
force | Slot erzeugen? (Input) |
Rückgabewert | Beschreibung |
---|---|
Pointer | Speicheradresse des Datenfelds |
Rückgabewert NULL bedeutet, dass das Ziel des Zugriffsausdrucks nicht erreicht wurde. Das kann verschiedene Ursachen haben:
Term | Ursache | ret. | type |
---|---|---|---|
name | Member NICHT in DDI und KEIN Slot | NULL | IDX_NOTHING ( - 1) |
name | Objekt besitzt diesen Slot NICHT und force=FALSE | NULL | Typ des Slots |
name-> | Pointer mit Wert NULL | NULL | IDX_POINTER, IDX_REL_11 oder IDX_REL_1M |
|
Collection mit weniger als k Elementen | NULL | IDX_COLL, IDX_REL_M1 oder IDX_REL_MN |
name() | Funktion gibt NULL zurück | NULL | IDX_UNDEFINE (0) |
Diese Funktion realisiert den Zugriff auf ein Datenmember über das DDI.
Auch auf einen Slot kann man zugreifen und mit dem letzten Parameter sogar verlangen, dass dieser für den schreibenden Zugriff erst erzeugt wird - Voraussetzung ist ein Eintrag im Slot-Dictionary.
Da man oft nur am Ziel des Zugriffsausdrucks interessiert ist, existiert eine einfachere Variante dieser Funktion:
void *GetDataField(char *name, OBJECTID *type = NULL, short force = FALSE);
Parameter | Beschreibung |
---|---|
name | ein Zugriffsausdruck (Input) |
type | Datentyp (Output) |
force | Slot erzeugen? (Input) |
Rückgabewert | Beschreibung |
---|---|
Pointer | Speicheradresse des Datenfelds |