In diesem Artikel möchte ich die Gemeinsamkeiten und Unterschiede der Datentypen int
und handle
beschreiben.
Bis zur CONZEPT 16-Version 5.2 existierte nur der Datentyp int
um Deskriptoren verwalten zu können. Anhand des Datentyps war es daher nicht möglich zu unterscheiden, ob auf ein Objekt zugegriffen wird, oder auf eine Zählervariable.
Deskriptoren werden im Bereich 10.100 bis 2.147.483.647 fortlaufend vergeben. Der Wertebereich vom Typ handle
ist der gleiche, wie vom Typ int
. Somit können auch Fehlercodes von Funktionen verarbeitet werden.
Die beiden Datentypen sind bis auf kleine Ausnahmen zueinander kompatibel, damit bestehende Prozeduren ohne zwingende Umstellung weiter betrieben werden können. Mit dem Datentyp handle
können keine arithmetischen Operationen durchgeführt werden. Dafür können selbst entwickelte Funktionen mit dem Pfeiloperator aufgerufen werden. Der Zugriff auf Funktionen von CONZEPT 16 ist mit beiden Datentypen per Pfeiloperator möglich.
Beispiel:
sub Func
(
aObj : handle;
)
{
// …
}
main
(
)
local
{
tObj : handle;
}
{
// …
tObj->Func();
// …
}
Wäre das Argument aObj
der Funktion Func
vom Typ int
, müsste der Aufruf wie folgt aussehen:
Func(tObj);
Fazit:
Der Datentyp handle
eignet sich besonders um Deskriptoren zu verwalten, da der Variableninhalt nicht so einfach versehentlich verändert werden kann. Zudem kann der Aufruf der Funktion wahlweise auch mit dem Pfeiloperator erfolgen, wodurch beim Lesen der Funktion sichtbar ist, dass es sich bei dem Parameter um ein Objekt handelt. Durch den extra Datentyp für Deskriptoren dient handle
zusätzlich auch der Selbstdokumentation des Prozedurcodes.