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 :

Question sur l'IDE


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 162
    Points : 124
    Points
    124
    Par défaut Question sur l'IDE
    Bonjour,
    Je suis étonné qu’on puisse déclarer, par mégarde, une variable locale du même nom qu’une variable globale sans recevoir d’erreur ou d’avertissement à la compilation. Je n’ai pas trouvé d’option à ce sujet. Aurais-je mal cherché ?

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    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 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut Langage Pascal
    Citation Envoyé par Teddy Voir le message
    Bonjour,
    Je suis étonné qu’on puisse déclarer, par mégarde, une variable locale du même nom qu’une variable globale sans recevoir d’erreur ou d’avertissement à la compilation. Je n’ai pas trouvé d’option à ce sujet. Aurais-je mal cherché ?
    Il est tout à fait possible de déclarer une variable locale du même nom qu'une variable globale dans un langage structuré.

    Nom : i1.png
Affichages : 144
Taille : 2,3 Ko

    Dans un langage structurée un bloc définit une partie délimitée de programme. Dans la figure ci-dessus en haut quatre blocs A,B,C et D.
    la variable v1 définie dans le bloc A est visible et utilisable dans ce bloc et dans tous les blocs imbriqués (B,C,D). La variable v2 définie dans le bloc C n’est utilisable que dans les blocs C et D. Le conception structurée permet une représentation arborescente. La variable V2 peut s'appeler V1 puisqu'elle n'est pas dans le même bloc

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 162
    Points : 124
    Points
    124
    Par défaut
    Ah, ok, merci pour ces précisions !
    En fait, j’ai toujours veillé à mettre des noms différents car je travaille souvent avec un autre compilateur (pour microcontrôleurs) qui ne fait pas cette différence, c'est-à-dire que la variable locale modifie la globale (mais évidemment pas l’inverse).
    Je pensais d’ailleurs que c’est pour cette raison qu’il est déconseillé d’employer des variables globales.

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    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 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Teddy Voir le message
    ...
    Je pensais d’ailleurs que c’est pour cette raison qu’il est déconseillé d’employer des variables globales.
    J'utilise couramment des variables globales car elles sont persistantes pour la durée de l'exécution du programme ce qui n'est pas le cas pour les variables locales.

  5. #5
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 931
    Points : 1 909
    Points
    1 909
    Par défaut
    Citation Envoyé par Teddy Voir le message
    Ah, ok, merci pour ces précisions !
    En fait, j’ai toujours veillé à mettre des noms différents car je travaille souvent avec un autre compilateur (pour microcontrôleurs) qui ne fait pas cette différence, c'est-à-dire que la variable locale modifie la globale (mais évidemment pas l’inverse).
    Je pensais d’ailleurs que c’est pour cette raison qu’il est déconseillé d’employer des variables globales.
    Non, c'est juste qu'il est plus difficile à maintenir une variable qui a une portée globale et qui peut être modifié n'importe ou dans le programme, pour ma part j'évite d'en utiliser, sauf si bien sûr, il n'est pas possible de faire autrement.

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Teddy Voir le message
    Ah, ok, merci pour ces précisions !
    En fait, j’ai toujours veillé à mettre des noms différents car je travaille souvent avec un autre compilateur (pour microcontrôleurs) qui ne fait pas cette différence, c'est-à-dire que la variable locale modifie la globale (mais évidemment pas l’inverse).
    Je pensais d’ailleurs que c’est pour cette raison qu’il est déconseillé d’employer des variables globales.
    peux tu me préciser de quel compilateur tu parles ? car la modification d'une variable globale quand on modifie une locale, c'est de l'ordre du bug, ou c'est toi qui te trompe dans tes explications ?!

    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
     
    program exemple;
     
    var
      v: Integer; // variable globale
     
    procedure test1(v: Integer); // paramètre
    begin
    // v = 100
      v := 2; // ne sert à rien mais c'est possible
    // v = 2
    end;
     
    procedure test2;
    var
      v: Integer; // variable locale
    begin
      v := 3; // ne sert à rien mais c'est possible
    end;
     
    begin
      v := 1;
      test1(100);
      test2();
      // ici v (global) est toujours égal à 1
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 162
    Points : 124
    Points
    124
    Par défaut
    Il s’agit d’un compilateur Pascal pour microcontrôleurs AVR Atmel.
    Mais je fais amende honorable :
    c’était en effet un bug qui a été corrigé, il y a même un certain temps. Je viens de le vérifier en consultant les notes de mises à jour.
    En fait, je continuais à éviter les doublons de noms parce que j’avais passé un moment à chercher un défaut dans mon programme, sans savoir que ce bug du compilateur avait été éradiqué.
    Cela dit, c’était aussi une erreur de ma part d’avoir utilisé 2 fois le même nom, parce que c’est quand même un facteur de confusion.

  8. #8
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 559
    Points : 3 948
    Points
    3 948
    Par défaut
    Salut

    C'est plutôt grave comme bug, car la notion de portée est fondamentale en Pascal. Je ne serai pas trop rassuré avec un tel compilateur...

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

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

Discussions similaires

  1. Question sur les logiciels IDE
    Par ludo386 dans le forum C
    Réponses: 5
    Dernier message: 14/12/2010, 09h02
  2. [PHPUnit] Combiné à Selenium IDE/RC extension firefox ?
    Par bilred dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/03/2010, 15h14
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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