Lade...
 

Kopieren

Copy

Copy(zugriffsAusdruck), Copy(zugriffsAusdruck, ENUM), Copy, Copy(STACK), Copy(STACK, ENUM)

Parameter: ein Zugriffsausdruck, Transformations-Flag

Stack
Stack   Beschreibung
Stack(In)   ein Objekt
Stack(Out)   Kopie des ausgewählten Datenmembers

Copy liefert die Kopie  eines über den Zugriffsausdruck erreichten Datenfeldes. Eine Fehlermeldung erscheint, wenn der Zugriffsausdruck zu einem nicht existierenden Datenfeld führt. Kann der Zugriffsausdruck nicht weiter verfolgt werden wegen

  • eines Pointers mit Wert = NULL,
  • einer Funktion, die NULL zurückgibt,
  • eines im Objekt nicht vorhandenen Slots,

so bringt Copy INVALID auf den Stack.

Hinweis:  Copy kann auf Elementardatentypen, Objekte und Referenzen, aber nicht auf Collections zugreifen.

Trifft Copy auf eine Referenz, so wird diese dereferenziert; man erhält eine Kopie des referenzierten Objekts.

Fehlt der Zugriffsausdruck, so erhält man eine (transiente) Kopie des Objekts vom Stack.

Das Flag ENUM kann angegeben werden, wenn der Zugriffsausdruck zu einem Element mit Datentyp ENUMSHORT oder ENUMCHAR führt. Mit diesem Flag erhält man den in eine Zeichenkette transformierten Wert (externe Darstellung), ohne Flag ENUM eine ganze Zahl (die interne Darstellung).

Von Copy erzeugte Kopien unterliegen der Garbage-Collection, dies gilt auch für Objekte: Wenn keine Variable und kein Stack-Eintrag mehr auf das transiente Objekt verweisen, vermutet InstantView®, dass dieses Objekt nicht länger benötigt wird und löscht es automatisch. InstantView® überprüft nicht, ob das zu löschende Objekt von einem anderen Objekt referenziert wird. In einem solchen Fall muss man entweder beide Objekte Variablen zuweisen oder die folgende Variante benutzen:

 

Copy(zugriffsAusdruck, KEEP), Copy(, KEEP), Copy(STACK, KEEP)

Parameter:  ein Zugriffsausdruck, Flag KEEP

Stack
Stack   Beschreibung
Stack(In)   ein Objekt
Stack(Out)   Kopie des ausgewählten Objekts

Das kopierte Objekt existiert so lange, bis es explizit mit Anweisung DeleteObject gelöscht wird.

Hinweis: 
Flag KEEP ist bedeutungslos bei elementaren Datentypen.

Bei einem persistenten Objekt beginnt eine Transaktion.