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

Langage Delphi Discussion :

Préfixage de variable delphi


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Préfixage de variable delphi
    Bonjour à tous,

    Mon Delphi est un peu rouillé cela fait longtemps que je ne l'ai plus utilisé et j'ai besoin de vos lumières.
    Voilà j'aimerai savoir si j'ai le droit d'écrire quelque chose comme cela. (Je reprend un code qui n'est pas à moi)

    J'ai des variables déclarées en private :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      private
        { Déclarations privées }
        sMaVariable : string;
    Du coup imaginons que j'ai ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.bouton1Click(Sender: TObject);
    begin
      sMavariable := 'test'; 
      AppelProc();
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure appelProc();
    begin
      // Ici je veux utiliser ma variable sMaVariable mais si je compile cela me met 'Identificateur non déclaré sMaVariable, ==> je suppose 
      // que c'est parce qu'il s'agit d'une déclaration private.Du coup je préfixe ma variable par le nom de ma Form :
      ShowMessage(Form1.sMaVariable.Value);
    end;
    Ici je veux utiliser ma variable sMaVariable mais si je compile cela me met 'Identificateur non déclaré sMaVariable, ==> je suppose que c'est parce qu'il s'agit d'une déclaration private, du coup je préfixe ma variable (ou même préfixer un composant ex form1.bitbtn1) par le nom de ma Form, j'ai le droit de faire cela ? C'est correct ?

    Merci pour d'avance pour votre aide en tout cas.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    la réponse est non

    plus précisément
    tans que tu te trouve dans la form tu as le droit d'y acceder ,la modifier, l'initialiser ... en fait c'est une variable quelquonque

    par contre dans ton appel de procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure appelProc();
    begin
      // Ici je veux utiliser ma variable sMaVariable mais si je compile cela me met 'Identificateur non déclaré sMaVariable, ==> je suppose 
      // que c'est parce qu'il s'agit d'une déclaration private.Du coup je préfixe ma variable par le nom de ma Form :
      ShowMessage(Form1.sMaVariable.Value);
    end;
    vu que la variable est en private tu ne devrais pas pouvoir accéder a cette élément en dehors de la form
    le mieux est de passer ta valeur en paramètre lors de l'appel de fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    procedure appelProc(Variable : String);
    begin
      // Ici je veux utiliser ma variable sMaVariable mais si je compile cela me met 'Identificateur non déclaré sMaVariable, ==> je suppose 
      // que c'est parce qu'il s'agit d'une déclaration private.Du coup je préfixe ma variable par le nom de ma Form :
      ShowMessage(Variable);
    end;
     
    procedure TForm1.bouton1Click(Sender: TObject);
    begin
      sMavariable := 'test'; 
      AppelProc(sMavariable);
    end;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 501
    Points : 2 768
    Points
    2 768
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Si tu passes ta variable en visibilité public cela devrait bien se passer

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 743
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 743
    Points : 13 299
    Points
    13 299
    Par défaut
    private équivaut à public dans la portée de l'unité courante. Pas de soucis de ce côté.

    Citation Envoyé par JRagg Voir le message
    j'ai le droit de faire cela ? C'est correct ?
    Bien sûr. Ce n'est pas une variable globale mais une variable propre à une instance d'objet, il faut bien cibler cet objet

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    C'est bon on m'a expliqué.

    En fait toutes les variables et composants étaient déclarés dans ma form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TForm1 = class(TForm)
      sMaVariable : string;
      Edit1 : TEdit;
    ...
    Du coup il faut que je crée ma procédure dans l'implémentation comme cela :

    Mais que dans mon code ma procédure elle-même soit précédée de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.appelProc();
    begin
      ShowMessage(sMaVariable.Value);
    end;

  6. #6
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 501
    Points : 2 768
    Points
    2 768
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par JRagg Voir le message
    Bonjour à tous,

    Mon Delphi est un peu rouillé cela fait longtemps que je ne l'ai plus utilisé et j'ai besoin de vos lumières.
    Voilà j'aimerai savoir si j'ai le droit d'écrire quelque chose comme cela. (Je reprend un code qui n'est pas à moi) ...
    Juste pour info ce code marche si tu retires '.value' - Compilé sur XE3
    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
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        sMaVariable : string;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure appelProc();
    begin
      ShowMessage(Form1.sMaVariable);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      sMavariable := 'test';
      AppelProc();
    end;

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

Discussions similaires

  1. Variable Delphi dans une ligne de commande
    Par Chemmister dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/02/2013, 10h21
  2. Lumières OpenGL / Variables Delphi
    Par adrien357 dans le forum OpenGL
    Réponses: 7
    Dernier message: 07/06/2006, 17h41
  3. [Rave report 5.1.3][delphi 7] Probléme variable PIVar
    Par GILLESKLEIN dans le forum Rave
    Réponses: 2
    Dernier message: 05/02/2005, 15h27
  4. Assembleur et type de variable delphi
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2004, 23h21
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35

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