Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
Storage

Storage 


 

Storage -> Funktionsergebnis 
Parameter Typ   Beschreibung
Funktionsergebnis  Objekt in Katalog der eingetragenen shared objects und shared collections

Die Funktion Storage gibt den Katalog der eingetragenen shared objects oder shared collections zurück, die im Objekt Storage auf dem aktuellen Rechner oder der Komponente eingetragen sind.

Der von Storage zurückgegebene Katalog wird von 4D automatisch erstellt und ist für alle Prozesse der Anwendung, inkl. preemptive Prozesse verfügbar. Es gibt einen Katalog Storage pro Rechner und pro Komponente: In einer Client/Server Anwendung gibt es ein shared object Storage auf dem Server und ein shared object Storage auf jeder remote 4D Applikation; verwendet die Anwendung Komponenten, hat jede Komponente ein eigenes shared object Storage.

Der Katalog Storage dient als Referenz auf shared objects/collections, die ein preemptive oder standardmäßiger Prozess verwenden soll. Um ein shared object/collection im Katalog einzutragen, fügen Sie die jeweilige Referenz ein, die von Storage zurückgegeben wird.

Da der von Storage zurückgegebene Katalog ein shared object ist, folgt er den auf der Seite Shared Objects und Shared Collections beschriebenen Regeln. Es gibt jedoch folgende Besonderheiten:

  • Dieses Objekt akzeptiert nur shared objects und shared collections. Versuchen Sie, andere Werte wie standardmäßige Objekte oder Collections, skalare Werte oder Nullwerte hinzuzufügen, wird ein Fehler erzeugt.
  • Zum Schreiben muss die Struktur Use...End use verwendet werden, sonst wird ein Fehler erzeugt. Lesen ist dagegen ohne Struktur Use...End use möglich.
  • Storage sperrt nur die Eigenschaft auf oberster Ebene für andere Prozesse. Die Eigenschaften selbst erfordern eigene Use...End use (siehe Beispiel 2).
  • Das von Storage zurückgegebene Objekt teilt seinen Sperrschlüssel NICHT mit den als Eigenschaften hinzugefügten shared objects/collections. Weitere Informationen dazu finden Sie im Abschnitt Sperrschlüssel (Locking Identifier) - Wie shared groups funktioniert.

Ein gängiges Beispiel ist, das Objekt Storage in der zu initialisieren: 

 Use(Storage)
    Storage.counters:=New shared object("customers";0;"invoices";0)
 End use

Dieses Beispiel zeigt einen Standardweg zum Setzen von Storage Werten:

 Use(Storage)
    Storage.mydata:=New shared object
    Use(Storage.mydata)
       Storage.mydata.prop1:="Smith"
       Storage.mydata.prop2:=100
    End use
 End use

Storage ermöglicht, ein Singleton (Entwurfsmuster) mit einer lazy initialization zu implementieren:

HInweis: Weitere Informationen dazu finden Sie auf folgender Wikipedia Seite.

 C_LONGINT($0)
 C_LONGINT($counterValue)
 C_OBJECT(counter//Eine Referenz auf "counter" für den Prozess erzeugen
 
 If(counter=Null//Ist diese Referenz Null, diese von Storage erhalten
    Use(Storage// Storage wird nur einmal benötigt!
       If(Storage.counter=Null)
          Storage.counter:=New shared object("operation";0)
       End if
       counter:=Storage.counter //Referenz von shared object "counter" erhalten
    End use
 End if
 Use(counter) //das shared object "counter" direkt verwenden (Storage wird nicht benötigt!)
    counter.operation:=counter.operation+1
    $counterValue:=counter.operation
 End use
 
 $0:=$counterValue



Siehe auch 

Shared Objects und Shared Collections

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Objekte (Sprache)
Nummer: 1525

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v16 R6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)