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)