IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Variable qui perd sa valeur


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Variable qui perd sa valeur
    Bonjour à tous,

    Je débute en Delphi et j'ai un problème que je n'arrive pas à résoudre depuis cet après midi malgrés mes recherches...

    J'ai des bases en Turbo Pascal et il y a quelque mois on m'a demandé de develloper une application qui permette de calculer le cheminement de l'eau sur une chaussée.
    J'ai donc devellopé cette application tant bien que mal en Delphi 4.0 mais avec mes bases de TP (tout dans la meme unité et pas d'utilisation orienté objet, difficile de faire plus moche n'est ce pas? ).

    Maintenant que mon application semble fonctionner j'aimerais la ré-écrire en plusieurs unité afin de rendre le programme plus simple si une autre personne est amenée à le lire.

    J'ai pour le moment créer 4 unités:

    -La premiere unité (associé à une fiche) ouvre une fenetre pour choisir le fichier à traiter ( je récupere des données géométriques des chaussées sur Excel) et permet de rentrer certain parametres;

    -La seconde unité classe les données récupéré via le fichier Excel;

    -La troisième unité procède à des calculs divers..

    -La quatrième unité (associé à une fiche) trace les écoulements.

    Mon problème (enfin!) est que dans la 4eme unité j'appelle une variable contenu dans la 3ème unité. J'ai donc déclaré cette derniere en globale et je n'ai pas d'erreur à la compilation. Le probleme c'est que lorsque le programme arrive à la 4eme unité il oublie la valeur de la variable qui repasse à zéro.

    Voici un morceau de l'unité 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    unit unité3;
     
    interface
     
    uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, FileCtrl,comobj;
     
    var
      La_variable_qui_oublie_sa_valeur:integer;
     
    implementation
     
     
    uses unité1;
     
     
    Procedure Stockage;
     
    var i,j:integer;
     
    begin
    end;
    Voici un morceau de l'unité 4:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     unit unité4;
     
    interface
     
    uses
      unité3;
     
    type
      TForm2 = class(TForm)
        ScrollBox1: TScrollBox;
        Image1:Timage;
        RadioGroup1: TRadioGroup;
        procedure FormCreate(Sender: TObject);
        procedure RadioGroup1Click(Sender: TObject);
      public
      end;
     
    var
      Form2: TForm2;
     
    implementation
     
    uses  unité1, unité2;
     
    {$R *.DFM}
     
    procedure TForm2.RadioGroup1Click(Sender: TObject);
    var
      i,n:integer;
    begin
      if radiogroup1.itemindex=0 then
      begin
        n:=La_variable_qui_oublie_sa_valeur;
    J'espere avoir été clair... et que ma question n'est pas trop bête

    Merci d'avance,
    Thierry

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,

    Tu fais un bel efffort d'explication qui mérite une réponse.

    Dans un premier temps je te conseille de modifier le nom de ta variable dans ton unité 3 afin de t'assurer que celui-ci est bien unique.

    La_variable_qui_oublie_sa_valeur devient xxLa_variable_qui_oublie_sa_valeur


    Cordialement.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    1) Si tu peut re editer ton message essay d'utiliser les balises afin de rentre le message plus lisible... (mais c'est pas grave)

    2) Essay pour voir de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n:=unit3.La_variable_qui_oublie_sa_valeur;
    Si c'est bon ,n'oublie pas le tag [RESOLU]...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Points : 89
    Points
    89
    Par défaut
    salut,

    Je suis allé un peu vite dans ma proposition d'hier: c'est faux ce que j'ai dit.

    Essay de mettre ta variable dans une classe en public (celle de la Form1attachée à l'unit1 par exemple). Losrque tu veux acceder à cette variable il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.taVariableMachin:="TRUC";
    Si ca ne foncionne pas regarde si tu ne fait pas un sonnerie lors des affectations...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    Ta réponse d'hier soir marche bien cfalcot, la variable garde sa valeur quand je l'appelle d'une autre unité. Je viens d'essayer la seconde, et ça marche aussi.

    @++
    Thierry

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Ce qui signifie, à mon humble avis, que tu as une variable de même nom dans une auter unité

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Variable qui change de valeur "toute seule"
    Par GDMINFO dans le forum C++
    Réponses: 9
    Dernier message: 14/10/2010, 18h12
  2. Variable qui change de valeur à chaque appel de fonction
    Par bpascal123 dans le forum Débuter
    Réponses: 5
    Dernier message: 12/03/2010, 11h47
  3. Variables qui perdent leur valeur lorsqu'utilisées dans fonction
    Par damlarumeur dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2009, 09h05
  4. Variable qui change de valeur toute seul :(
    Par lcfseth dans le forum C
    Réponses: 12
    Dernier message: 22/12/2007, 12h25
  5. [Tableaux] Variable qui prend plusieurs valeurs
    Par gandoulfe dans le forum Langage
    Réponses: 14
    Dernier message: 26/02/2006, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo