Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Storage
|
Storage -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
Funktionsergebnis | Objekt |
![]() |
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:
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
Produkt: 4D
Thema: Objekte (Sprache)
Nummer:
1525
Erstellt: 4D v16 R6
4D Programmiersprache ( 4D v20 R7)