Lade...
 

CX_CLASS::SanityCheck

CX_CLASS::SanityCheck

Beschreibung:

Diese Klassenfunktion prüft, ob das Objekt in sich konsistent ist. Folgende Ergebniscodes sind bisher definiert:

Slots
Code Erläuterung
1 Slot: Pointer auf Daten = NULL (oder dynamic_cast schlägt fehl)
2 Slot: Pointer korrupt (mapping into real memory fails)
3 Slot - unbekannter Datentyp (nicht im Dictionary)
4 Fehler im Frame: n < g
5 Fehler im Frame: n < 0 oder g < 0
6 Fehler im Frame: g > 0 aber kein Slotvektor allokiert
7 DeleteSlot hat Datenpointer nicht zurückgesetzt (auf NULL) ... harmlos
8 Slotname = 0
9 dynamischer Slot (siehe AssignSlot) - Slot nicht im Dictionary
10 dynamischer Slot (siehe AssignSlot) - keine Beziehung zu definierendem Ausdruck
11 REFERENCE_BASED nicht erlaubt in persistentem Objekt (lt. Kommentar im Code)
13 anonymous Slot (siehe CX_OVERWRITING_REF) - kein Bezug zu überschreibendem Ausdruck
14 Fehler beim Aufruf von SanityCheck() für das Objekt eines Slots. Evt. ist virtual function table kaputt.
Objekte
Code Erläuterung
20 - 22 CXB_MULTIPLE_STRING: Widerspruch Anzahl - allokierte Strings
24 CXB_MULTIPLE_STRING: Teilstring nicht derefenzierbar
30, 31 CX_NUMERIC korrupt
32 Unit korrupt
33 Wert 94967254 !!!
41 CX_DESCRIPTIVE_REF und abgeleitete - Pointer auf "Wrapper" korrupt (dynamic_cast schlägt fehl)
42 CX_DESCRIPTIVE_REF und abgeleitete - Pointer auf Zielobjekt korrupt (mapping into real memory fails)
43 CX_DESCRIPTIVE_REF und abgeleitete - Zielobjekt ist NULL
50 CX_EXPANDABLE und abgeleitete - classID falsch
71-73 CX_SPAN_DATE
80, 81 CX_PERIODIC_DATE
85, 86 CX_DATETIME
87-89 CX_GLOBAL_DATETIME
100-107 CX_LOCALE
391 CX_FORMULA - Ausdruck widerspricht Syntax
400 CX_CONDITIONED_BAG - Kette der CX_FCONDITIONs korrupt (dynamic_cast schlägt fehl)
401 CX_CONDITIONED_BAG mit "fremdem" CX_FCONDITION (fCond->parent != this)
402 CX_CONDITIONED_BAG - Kette der CX_FCONDITIONs korrupt (mapping into real memory fails)
501 CX_COM_OBJECT ohne Daten (persistentDataStream == NULL)
511 CX_MULTIPLE_COM_OBJECT enthält mindestens ein CX_COM_OBJECT ohne Daten
521 CX_UNIT_PARAMETER enthält Namensstring mit unerlaubten Zeichen
522 CX_UNIT_PARAMETER bezieht sich nicht auf eine erlaubte Basiseinheit

SanityCheck ruft sich selbst auch für im DDI eingetragene Member auf, sofern es sich um ein Objekt handelt. Bei einem Fehler wird Original-Errorcode + 10000 zurückgegeben.

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_CLASS Das zu prüfende Objekt
Stack(Out) Top INTEGER Ergebnis der Prüfung: 0 = ok, andere Codes wurden oben erläutert
Funktionsaufruf: Call(SanityCheck)