begin process at 2010 03 18 00:53:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

Problème avec une variable statique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec une variable statique

mardi 24 juin 2008 à 10:03:59 | Problème avec une variable statique

Zekk65

Bonjour à tous,

Je vous expose en quelque lignes mon problème:

J'ai une DLL (c++) appelée par un programme windev.

Dans cette DLL, j'ai un première fonction qui récpuère une trame.
D'autres fonctions viennent récupérer la partie de la trame qui leur intéresse.
Toutes mes fonctions sont externes pour pouvoir être appelées par WinDev, j'ai donc besoin d'une variable dans laquelle je place ma trame récupérée dans la première fonctions, et qui va être réutilisée par les autres fonctions.

A noter que mes fonctions s'exécutent dans un ordre bien précis (pas de risque donc qu'une fonction qui traite la trame soit appelée avant que la trame soit récupérée).

On m'a conseillé de placer ma variable "trame" comme statique, chose que je ne maitrise pas donc si quelqu'un pourrait m'aider (variable de type strin).

Merci à vous !
mardi 24 juin 2008 à 12:05:18 | Re : Problème avec une variable statique

Zekk65


Pour apporter un peu de précisions :

J'ai créé une variable statique dans le .h en public comme ceci:
 
" MaClass.h"

class CMaClass {

public:
    CMaClass();
   ~CMaClass();

    //Variables
    static int maVar;
  
};
int CMaClass::maVar = 0;

Dans ma première fonction, il y a tout un traitement puis je retourne "CMaClass::maVar" et c'est la bonne valeur qui m'est affichée.
Dans ma deuxième fonction, il y a juste un "return CMaClass::maVar" pour voir si il a gardé la valeur retournée dans la première fonction, et là il me retourne 0 (ou n'importe quelle valeur avec laquelle je l'aurais initialisé).

Quelqu'un aurait-il une solution pour garder la valeur d'une fonction à l'autre ?

Merci d'avance !!
mardi 24 juin 2008 à 12:33:51 | Re : Problème avec une variable statique

luhtor

Oui une variable statique garde sa valeur n'importe ou dans le programme tant que tu n'as qu'un seul "contexte" mémoire ! Or avec une dll, c'est beaucoup plus complexe, car la dll a déja été linké, et la variable static "CMaClass::maVar" n'est pas la meme dans la dll et dans ton exécutable. Donc conclusion, n'utilises pas de variable static si elle est accessible de l'exécutable et de la dll.
mardi 24 juin 2008 à 13:52:30 | Re : Problème avec une variable statique

Zekk65


Tout d'abord merci de ta réponse.
Etant donné que ma dll n'est chargée qu'une fois par le programme hôte, ça ne rentre pas dans la condition de "un seul contexte mémoire" ?

J'ai bien compris que le fait que je sois "sous DLL" me restreint au niveau de mes variables, mais aurais tu une solution pour qu'une variable garde la valeur que je lui ai donnée entre deux fonctions exportées (la première récupère maVar, la deuxième doit traiter maVar) ?
mardi 24 juin 2008 à 19:53:38 | Re : Problème avec une variable statique

luhtor

A priori, si tes deux fonctions dans la dll, il n'y aura pas de pb. Mais c'est la dll qui définir la valeur de ta variable. Mais a ta place, j'éviterais tout simplement les variables static dans ton cas.
mardi 24 juin 2008 à 20:27:37 | Re : Problème avec une variable statique

Zekk65

j'ai l'alternative des Files que j'ai déjà testé, je voulais évité d'utiliser cette méthode, mais j'ai pas l'air d'avoir bcp d'autres solutions :)
mardi 24 juin 2008 à 22:08:57 | Re : Problème avec une variable statique

luhtor

Mais j'ai du mal a comprendre pourquoi tu utilises une dll.


Cette discussion est classée dans : problème, variable, fonctions, trame, statique


Répondre à ce message

Sujets en rapport avec ce message

Problème de fonctions [ par sebastienbro ] Voilà, j'ai créé une fonction Cryptage qui renvoi un type long pr savoir si il y a une erreur ou pas.J'aimerais savoir comment faire pour que la fonct Variable partagée : semaphore ? [ par sena ] Bonjour,j'ai deux fonctions.Une de ces 2 fonctions est un thread qui s'exécute toutes les 3 secondes.Ces 2 fonctions utilisent une même variable.je su problème pour récupérer une variable [ par arwenita ] Avec C++ Builder, je récupère une donnée et je veux l'afficher. Lorsque je le fais directement, ca marche :resultat->Lines->Text=cle1->Text.c_str();< problème de variables globales répétées [ par KreIS ] Alors voilà, mon problème est tout simple : imaginez qu'il y a un header qui contient une varible globale et plusieurs .cpp qui l'inclusent.le problèm Problème de "tampon" [ par speeddo ] Bonjour,je stock dans une variable de type Variant des données venant d'un autre logiciel. Ces données sont mis dans la dite variable grace à une fonc scanf / printf avec variable char [ par domcergyitin95 ] Bonjour, je début en C, et j'ai un problème que je n'arrive pas à résoudre, malgré que le reste du programme soit plus complexe et que ça tourne bie Problème lorsque que je met une variable dans AfxMessageBox(nom_variable); [ par Gulius ] Voila lorsque je met le nom d'un variable dans AfxMessageBox, et que je compile mon projet il n'y aucune erreur mais lorque je lance l'éxecutable, et clrscr(); et gotoxy(); dans conio.h ? [ par laurentl2000 ] Bonjour, Je suis débutant en C++ et j'ai pêché un cours sur Internet... Je suis au chapitre 2 sur 7... Voici mon problème : Je dois employer les fonct Problème de création de dll !! (C++ Builder) [ par SibosisITS ] J'ai la procédure d'entrée de la dll, j'ai écris mes fonctions, mais là ou je coince, c'est pour les arguments à mettre dans l'en-tête de mes fonction administration [ par abirti ] Bonjour, j'ai trouvé un problème dans l'utilisation des fonctions SNMP en particulier dans l'appel de ces fonctions un message d'erreur apparaît:"erro


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,140 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales