Passage de variable

wasaikos Messages postés 19 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 24 juin 2008 - 23 juin 2008 à 17:07
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 24 juin 2008 à 16:12
salut à tous j'ai besoin de vous
En effet je suis en train de créer une dll dans laquelle j'ai besoin d'une variable qui n'est jamais détruite car elle doit garder une valeur que j'ai besoin de réutiliser dans deux fonctions séparées.

Inutile de me parler de variables membres... j'ai déja essayé ... ;)

Si quelqu'un aurait une solution style variables globales en php ...

Merci d'avance !

8 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
23 juin 2008 à 17:14
Salut
Essaye le mot cle  : static devant la declaration de ta variable.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
23 juin 2008 à 17:41
"Si quelqu'un aurait une solution style variables globales en php ..."

Quoi ??? Quel est le rapport avec php ?

Si tu as besoin d'une variable que tu pourras utiliser dans 2 fonctions à la fois, déclare la en globale.
Cependant, attention.
Cette façon de procéder peut demander des synchronisations. En effet, étant donné que c'est une dll, tu n'as donc pas de contrôle sur les threads de l'utilisateur.
Exemple, si tu utilises fonction1 sur thread1 et fonction2 sur thread2, il y a des chances pour que les 2 fonctions soient appelées "en même temps" et donc que la valeur de la variable soit modifier par, disons, fonction2 avant que fonction1 ait le temps de la traiter.

C++ (@++)<!--
0
wasaikos Messages postés 19 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 24 juin 2008
24 juin 2008 à 00:12
merci d'avoir répondu


mon problème vient du fait que je dois dans une première fonction stocker une trame en string puis depuis d'autres fonction appeler cette trame et retourner certaines parties je dois donc stocker cette trame pour que je puisse la rappeler a n'importe quel moment depuis ma dll
0
wasaikos Messages postés 19 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 24 juin 2008
24 juin 2008 à 08:25
j'expose un peu plus précisément mon problème:

Fonction1: récupère une trame qui doit être sauvegardée dans une variable
Fonction2 : récupère le début de la trame
Fonction3 : récupère le milieu de la trame
Fonction 4: récupère la fin de la trame

Bref, la trame doit être stockée temporairement pour être utilisée par ces fonctions.

@SAKingdom : mes fonctions traitent la trame dans un ordre bien précis, et elles ne peuvent êtres appelées que dans cet ordre là ;)

merci de vos réponses.

ps: je vais tester "static"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wasaikos Messages postés 19 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 24 juin 2008
24 juin 2008 à 10:54
j'ai testé static soit je ne sais pas m'en servir soit ça marche pas
comment l'utilisé?
esque c'est sur que ça marche??
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
24 juin 2008 à 14:44
Faut ecrire :
static string MaString;
En ajoutant static tu as transformee ta variable locale en une variable globale. 

A+
Mon site internet : http://pistol.petesampras.free.fr
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 juin 2008 à 16:04
void tete () {
    static int toto;
    ...
}

toto n'est utilisable que dans tete. La porté reste donc locale même si la variable est considérée comme globale.

int toto;

void tete () {
    toto = 5;
    ...
}

toto est utilisable dans toute les fonctions qui suiveront.
Attention. Mon commentaire sur les synchronisations s'applique toujours.

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 juin 2008 à 16:12
"@SAKingdom : mes fonctions traitent la trame dans un ordre bien précis,
et elles ne peuvent êtres appelées que dans cet ordre là ;)"

Ah ok. Ta dll est donc limité à n'être utilisée que sur un seul thread à la fois. Je considère aussi que tu ne souhaites pas redistribuer ta dll.
Dans le cas contraire, des synchros (peut-être pas (seulement) dans la dll cependant) et certaines sécurité face à l'utilisation de tes fonctions (l'ordre surtout d'après ce que je peux comprendre) s'imposes.

C++ (@++)<!--
0
Rejoignez-nous