Rendre null un objet du storage

Salut,

J’écris un truc comme ça dans le storage:

<code 4D>
C_OBJECT($0)
If (Storage.prefs=Null)

Use (Storage)
	
	Storage.prefs:=New shared object
	Use (Storage.prefs)
		
		C_OBJECT($O)
		$O:=ds.PREFS.all()
		
		Storage.prefs.routedefault:=$O.Route_code_default_I[0]
	End use 
End use 

End if
</code 4D>

Comment je peux faire pour rendre null l’objet Storage.prefs ?

non. Le storage n’est pas partagé et chaque machine a le sien

Le catalogue retourné par Storage est créé automatiquement par 4D et
est disponible pour tous les process de la base, y compris les
process préemptifs. Il existe un seul catalogue Storage par machine
et par composant : dans une application client/serveur, il y a un
seul objet partagé Storage sur le serveur, et un objet partagé
Storage sur chaque application 4D distante ; si la base utilise des
composants, il y a également un objet Storage par composant.

ok merci

comment faire une générique pour récupérer une valeur dans un des objets d’un storage ?

objet1:=“texte”;“toto”
objet2:=“madate”;!01/11/2018!)

le storage est formé avec ces deux objets

mais j’ai souhaite créer une méthode générique pour récupérer la valeur d’un element d’un des objets?

How do I ???

Bonsoir Carlos

tu n’as pas besoin de générique car dans ton cas, pour lire tu fais :
storage.objet1.texte (je pense que c’est la propriété dans ton exemple), et cela te retourne la valeur, idem pour objet2 (storage.objet2.madate)

Je fais comme ça :

Toutes les versions de mes composants sont stockées dans le storage
<code 4D>
C_OBJECT($0)

Use (Storage) // #20181022-1

If (Storage.versions=Null)
	
	C_OBJECT($O_InfoObject)
	$O_InfoObject:=New object
	tip_info ($O_InfoObject)
	
	Storage.versions:=New shared object
	
	Use (Storage.versions)
		
		Storage.versions.about:="4D-COMP-ABOUT: "+Version_comp_about 
		Storage.versions.lb_arr:="4D-COMP-LISTBOX_ARR: "+VERSION_COMP_LISTBOX_ARR 
		Storage.versions.lb_sel:="4D-COMP-LISTBOX_SEL: "+Version_LB_sel 
		Storage.versions.toolbox:="4D-COMP-TOOLBOX-16: "+Version_toolbox 
		Storage.versions.sms:="CONTROLE-SMS: "+CSMS_Version_Composant 
		Storage.versions.register:="4D-COMP-APP-REGISTER: "+4D_COMP_APP_REGISTER_VERSION   // #20181029-2
		Storage.versions.another_tip:="AJAR ANOTHER TIP: "+$O_InfoObject.version+" "+$O_InfoObject.expiration
	End use 
End if 

$0:=Storage.versions

End use

// EOM

</code 4D>

j’appelle le code :

<code 4D>
C_OBJECT($O_Versions)
$O_Versions:=Versions composants storage
</code 4D>

et ainsi de suite selon le thème

Si le storage du thème n’existe pas il est créé et dans tous les cas je récupère un objet avec les infos qui m’interessent

Bonjour Bertrand,

je fais à peu prêt la même chose, mais la question est une générique pour lire, ce qui, à mon sens, n’est pas utile de créer.
Par contre, dans ton code, ta ligne ‘tip_info’ m’interpelle : que fait-elle ?

Patrick

ok mais mon idée du départ est d’ajouter dans le storage deux ou trois objets un pour le serveur et un autre pour les clients, et éventuellement un commun aux deux.
c’est pourquoi je voulais une méthode générique pour récupérer les valeurs en fonction d’ou je suis.

L’idée du storage me parait très bonne à condition d’avoir une structure de stockage facilement utilisable, d’ou mon idée de générique.

Merci

ça a l’air de marcher avec un objet déclaré “à vide”, comme une image ou un pointeur :
<code 4D>
Utiliser (Storage)
Storage.testArnaud:=Créer objet partagé(“prop”;“valeur”)
Fin utiliser
Utiliser (Storage)
//…
Utiliser (Storage.testArnaud)
C_OBJET($null_o)
Storage.testArnaud:=$null_o
Fin utiliser
Fin utiliser
</code 4D>

Je viens de faire ça:

<code 4D>
C_OBJECT($O)

Use (Storage.local)
Storage.local:=$O
End use

</code 4D>

et j’ai ça :
[]29511314;“Your comment here…”[/]

Il ne te manque pas un étage de Use (ça use, ça use…) ?

Use(Storage)
Use(Storage.local)
Storage.local:=$O
End use
End use

(je suis pas le sachant du storage)

Bonjour

En effet, il manque un Use(Storage) avant.

Et pour assigné null à la propriété prefs, vous pouvez utiliser un objet déclaré mais non initialisé comme l’indique Arnaud, ou vous pouvez directement affecté le résultat de la commande Null (Storage.prefs:=Null)

Bonne soirée

Good