Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Storage
|
Storage -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
Resultado | Objeto |
![]() |
Catálogo de objetos compartidos e coleções compartidas registrados | |||||
O método Storage devolve um catálogo de objetos compartidos registrados ou coleções compartidas disponíveis para todos os processos na máquina ou componente atual.
O catálogo devolvido por Storage é criado automaticamente por 4D e está disponível para todos os processos do banco de dados, incluídos os processos preemptivos. Existe um catálogo Storage por máquina e componente: em uma aplicação cliente/servidor, há um objeto compartido Storage no servidor e um objeto compartido Storage em cada aplicação 4D remota; se o banco de dados usar componentes, há um objeto Storage por componente.
Utilize o catálogo Storage para fazer referência a qualquer objeto compartido ou coleção compartida que deseje utilizar desde qualquer processo preemptivo ou padrão. Para registrar um objeto compartido ou uma coleção compartida no catálogo, agregue su a referência ao objeto compartido devolvido por Storage.
Como o catálogo devolvido por Storage é um objeto compartido, segue as regras descritas na seção Objetos compartidos e Coleções compartidas, mas com algumas características específicas:
Una prática comum poderia ser inicializar o objeto Storage em :
Use(Storage)
Storage.counters:=New shared object("customers";0;"invoices";0)
End use
Este exemplo mostra uma forma padrão de estabelecer valores de Armazenamento:
Use(Storage)
Storage.mydata:=New shared object
Use(Storage.mydata)
Storage.mydata.prop1:="Smith"
Storage.mydata.prop2:=100
End use
End use
Storage permite implementar um singleton com uma inicialização lenta, como é mostrada no exemplo abaixo.
Nota: para mais informação sobre os padrões de singleton, pode consultar esta página de Wikipedia.
C_LONGINT($0)
C_LONGINT($counterValue)
C_OBJECT(counter) //cria uma referência ao contador para o processo
If(counter=Null) //Se esta referência for nula, obtenha if de Storage
Use(Storage) // O uso de armazenamento só é necessário uma vez!
If(Storage.counter=Null)
Storage.counter:=New shared object("operation";0)
End if
counter:=Storage.counter //Obter a referência de objeto compartido contador
End use
End if
Use(counter) //use diretamente o contador de objetos compartidos (não necessita usar Storage!)
counter.operation:=counter.operation+1
$counterValue:=counter.operation
End use
$0:=$counterValue
Produto: 4D
Tema: Objetos (Linguagem)
Número
1525
Criado por: 4D v16 R6
Manual de linguagem 4D ( 4D v20 R7)