Les propriétés dynamiques

Ce programme présente la déclaration de propriétés dynamiques à un type et l'accès dynamique à toutes les propriétés de ses objets.

Le fichier source est ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/propdyn.upl.

Mode compilé

Commande de compilation

upscmp Source=propdyn.upl AdaptateurDictionnaire=Oui

Commande d'exécution

propdyn

Mode interprété

upssng Source=propdyn.upl

Fichier source

Source Composant "Exemple d'emploi des proprietes dynamiques" Version 4.0.0;

Type T Defaut ProprietesDynamiques
/********************************/
Public : Prive : Public : Fin Type

Variable
/******/
Principal
/*******/
Debut
VT.EcrirePropriete("A1", Objet(Vrai));
Ecran.Ecrire("VT.A1="+Caractere(Booleen(VT.LirePropriete("A1"))));
VT.EcrirePropriete("B1", Objet(Faux));
Ecran.Ecrire("VT.B1="+Caractere(Booleen(VT.LirePropriete("B1"))));
VT.EcrirePropriete("C1", Objet(1));
Ecran.Ecrire("VT.C1="+Caractere(Entier(VT.LirePropriete("C1"))));
VT.EcrirePropriete("D1", Objet(2));
Ecran.Ecrire("VT.D1="+Caractere(Entier(VT.LirePropriete("D1"))));
VT.EcrirePropriete("E1", Objet(10.1));
Ecran.Ecrire("VT.E1="+Caractere(Reel(VT.LirePropriete("E1"))));
VT.EcrirePropriete("F1", Objet(12.1));
Ecran.Ecrire("VT.F1="+Caractere(Reel(VT.LirePropriete("F1"))));
VT.EcrirePropriete("G1", "coucou");
Ecran.Ecrire("VT.G1="+Caractere(VT.LirePropriete("G1")));
VT.EcrirePropriete("H1", "hello");
Ecran.Ecrire("VT.H1="+Caractere(VT.LirePropriete("H1")));
Ecran.Ecrire("\n");

VT.SupprimerPropriete("A1");
Ecran.Ecrire("VT.A1="+Caractere(Booleen(VT.LirePropriete("A1"))));
VT.SupprimerPropriete("B1");
Ecran.Ecrire("VT.B1="+Caractere(Booleen(VT.LirePropriete("B1"))));
VT.SupprimerPropriete("C1");
Ecran.Ecrire("VT.C1="+Caractere(Entier(VT.LirePropriete("C1"))));
VT.SupprimerPropriete("D1");
Ecran.Ecrire("VT.D1="+Caractere(Entier(VT.LirePropriete("D1"))));
VT.SupprimerPropriete("E1");
Ecran.Ecrire("VT.E1="+Caractere(Reel(VT.LirePropriete("E1"))));
VT.SupprimerPropriete("F1");
Ecran.Ecrire("VT.F1="+Caractere(Reel(VT.LirePropriete("F1"))));
VT.SupprimerPropriete("G1");
Ecran.Ecrire("VT.G1="+Caractere(VT.LirePropriete("G1")));
VT.SupprimerPropriete("H1");
Ecran.Ecrire("VT.H1="+Caractere(VT.LirePropriete("H1")));
Ecran.Ecrire("\n");

Ecran.Ecrire("VT.A2="+Caractere(Booleen(VT.LirePropriete("A2"))));
Ecran.Ecrire("VT.B2="+Caractere(Booleen(VT.LirePropriete("B2"))));
Ecran.Ecrire("VT.C2="+Caractere(Entier(VT.LirePropriete("C2"))));
Ecran.Ecrire("VT.D2="+Caractere(Entier(VT.LirePropriete("D2"))));
Ecran.Ecrire("VT.E2="+Caractere(Reel(VT.LirePropriete("E2"))));
Ecran.Ecrire("VT.F2="+Caractere(Reel(VT.LirePropriete("F2"))));
Ecran.Ecrire("VT.G2="+Caractere(VT.LirePropriete("G2")));
Ecran.Ecrire("VT.H2="+Caractere(VT.LirePropriete("H2")));
Ecran.Ecrire("\n");

VT.EcrirePropriete("P1", "Propriete 1");
VT.EcrirePropriete("P2", "Propriete 2");
VT.EcrirePropriete("P3","Propriete 3");
Ecran.Ecrire("VT.P1="+Caractere(VT.LirePropriete("P1")));
Ecran.Ecrire("VT.P2="+Caractere(VT.LirePropriete("P2")));
Ecran.Ecrire("VT.P3="+Caractere(VT.LirePropriete("P3")));
Ecran.Ecrire("\n");

VT.SupprimerPropriete("P2");
Ecran.Ecrire("VT.P1="+Caractere(VT.LirePropriete("P1")));
Ecran.Ecrire("VT.P3="+Caractere(VT.LirePropriete("P3")));
Ecran.Ecrire("\n");

P=VT.EnumererProprietes(++Numero, TP, EstNul, ?, ?);
TantQue P!=Nul Faire Fin TantQue
Fin Principal

Résultat de l'exécution

VT.A1=Vrai VT.B1=Faux VT.C1=1 VT.D1=2 VT.E1=10,1000 VT.F1=12,1000 VT.G1=coucou VT.H1=hello VT.A1=Faux VT.B1=Faux VT.C1=0 VT.E1=0,0000 VT.A2=Faux VT.B2=Faux VT.C2=0 VT.E2=0,0000 VT.G2= VT.P1=Propriete 1 VT.P2=Propriete 2 VT.P3=Propriete 3 VT.P1=Propriete 1 VT.P3=Propriete 3 P=A1 Enumere Faux P=B1 Enumere Vrai P=C1 Entier Faux P=D1 Entier Vrai P=E1 Reel Faux P=F1 Reel Vrai P=G1 Caractere Faux P=H1 Caractere Vrai P=A2 Enumere Faux P=B2 Enumere Vrai P=C2 Entier Faux P=D2 Entier Vrai P=E2 Reel Faux P=F2 Reel Vrai P=G2 Caractere Faux P=H2 Caractere Vrai P=P1 Objet Vrai P=P3 Objet Vrai