Question sur les variables.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Question sur les variables.

Message par Ulix »

Bonjour a tous,


Je me suis lancer dans un nouveau petit projet.
Je programme a l'ancienne (pas de module :( ), et donc j'utilise souvent des
XIncludeFile pour charger des portions de programme (ayant leurs propres variables)
que je réutilise dans tous mes programmes.
Ex de fichier include : Log, Mdp, Synt, Pref, AProp, Prn, GtkLp... etc.

Et donc, j'inclus ces portions dans le programme principal (avec XIncludeFile ),
toutefois je suis bien obligé de nommer les variables (en global) dans mon programme principal !

C'est alors, qu'il met venu une réflexion : :idea:
Pourquoi ne pas lier deux variables ensembles (noms différents,
mais même valeur : attention toujours de même type),
un genre : Alias(Var1.b, Var2.b)

Je n'est rien trouvé de la sorte dans PureBasic ! (a moins que j'ai mal vu...)

Et la question est : (juste une question en passant ! je me débrouillerais bien s'en...)
Existe-il une solution pour lier deux variables (de même type) entre elles ?

J'explique avec un cas concret : 2 variables de nom suivants : Log_Etat.b et Prog_LogEtat.b

Si je change la valeur de l'un, l'autre change automatiquement;
Ex : Log_Etat.b = 1 et donc Prog_LogEtat.b = 1

Et bien sur l'inverse devient vrai aussi
Ex : Prog_LogEtat.b = 1 et donc Log_Etat.b = 1

Quelqu'un a-t-il une solution ? :oops:

Sinon peut-on imaginer que Fred implémente une nouvelle fonction !
Après tout, ne peut-on demander au compilateur de pointer la même adresse
mémoire pour deux noms de variables différentes ?


Merci de m'avoir lu ! :wink:
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Question sur les variables.

Message par falsam »

Ulix a écrit :Quelqu'un a-t-il une solution ?
Et bien .... non.

Mais j'ai lu :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: Question sur les variables.

Message par Mindphazer »

Moi aussi j'ai lu
Et..... j'ai pas compris l'intérêt.. (mais j'ai beau avoir lu, j'ai peut-être mal compris :mrgreen: )
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Question sur les variables.

Message par Ar-S »

Si tu connais tes variables à l'avance (ce qui est logiquement le cas) tu peux faire une petite macro

Code : Tout sélectionner

Macro V(v1,New)
    v1=New
    Prog_LogEtat=v1
EndMacro

Log_Etat.b = 1
Prog_LogEtat.b = 5

Debug Log_Etat.b
Debug Prog_LogEtat.b

;---- On change l'avaleur de Log_Etat

V(Log_Etat,8)
Debug Log_Etat.b
Debug Prog_LogEtat.b
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Question sur les variables.

Message par microdevweb »

Je ne suis pas certain d'avoir compris le sens de ta question, mais si tu veux plusieurs allias pour une même variable il faut utiliser les pointeurs

Code : Tout sélectionner

Global maVariableGlobal.i

Global *monAlias1 = @maVariableGlobal
Global *monAlias2 = @maVariableGlobal

PokeI(*monAlias1,7)
Debug PeekI(*monAlias1)
Debug maVariableGlobal
PokeI(*monAlias2,25)
Debug PeekI(*monAlias2)
Debug maVariableGlobal
Maintenant il est vrai que je trouve que l'usage des pointeurs en Pb est mais facile qu'en C

exemple en C

Code : Tout sélectionner

int maVariableGlobal = 0;
int *monAllias1 = &maVariableGlobal;
int *monAllias2 = &maVariableGlobal;

*monAllias1 = 7;
printf("%d",*monAllias1);
// print address (same address of monAllias2 and  &maVariableGlobal)
printf("%p",monAllias1);
printf("%d",maVariableGlobal);
*monAllias2 = 25;
printf("%d",*monAllias2);
// print address (same address of monAllias1 and  &maVariableGlobal)
printf("%p",monAllias2);
printf("%d",maVariableGlobal);
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Question sur les variables.

Message par Ulix »

Bonjour a tous

Et merci de m'avoir lu et pris le temps de commenté.

@Mindphazer : Tu n'a pas compris l'intérêt.. !
L'intérêt est de pouvoir incorporer (via les XIncludeFile) des portions entières de code
(ensemble de tache dédiés, fenêtre et fonctions sans utilisé les modules :twisted: ) dans
le programme principal sans être obliger de truffé ce même programme principal de
toutes les variables indispensables de ces XIncludeFile.

@microdevweb : C'est l'idée, mais cela serait 'cool' que cela soit
fait au niveau du compilateur, une fonction un genre : Alias(Var1.b, Var2.b)
qui si on change la valeur de l'une, cela change automatiquement la valeur de l'autre
et vis-versa.

L'idée aussi c'est que cela doit être transparent, automatique !
Peut-être avec un thread :?: en arrière plan qui surveillerait un certain nombres de variables,
et lorsque une d'entre elles changerait cela changerait la variable avec laquelle elle est liée.

En tous cas merci pour vos réflexions ! :lol:
Mais le sujet et ouvert...
Répondre