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 :

La variable 'j' est déclarée mais jamais utilisée?


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut La variable 'j' est déclarée mais jamais utilisée?
    Bonjour à tous,

    Voilà mon interrogation au sujet des conseils que me donne D7 lorsque je déclare ma variable J et qu'ensuite je n'utilise celle-ci uniquement dans un CASE = 10. Comment faire pour que ma programmation soit propre et que ce Conseil n'apparaisse plus ? (Mise à part biensur désactiver les messages "Conseils"

    Voici mon bout de code ci-dessous :

    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
    procedure TMain.FormCreate(Sender: TObject);
    var
      ....
      i, j : integer;
      ...
    begin
     
      Case APPLICATIONID of
        ..............
        10 : Begin
                 ........
                       for j:=0 to L.Count-1 do
                       Begin
                          ............
                         ............
                       end;
                 ..........
            End
          Else
            Caption:='MP '+MAJOR_VERSION+'.'+MINOR_VERSION;
        End;
      ..................
    end; {* PROC .FormCreate *}

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    C'est juste un avertissement, qui t'indique qu'il se peut que ta variable n'est pas initialisée et tu en auras à chaque fois que tu fais comme le code que tu nous montres. (Delphi analyse en global et ne cherche pas tous les cas possible d'entrer dans ton case)
    En aucun cas cela veut dire que ton code n'est pas "propre" (c'est quoi d'ailleur un code propre ? Un code qui est imprimé et passé à la machine à laver ? ).

    Si tu ne veux plus que ce message apparaisse, il te suffit de rajouter j:=0; en début de procédure.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 669
    Points : 7 016
    Points
    7 016
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Si tu ne veux plus que ce message apparaisse, il te suffit de rajouter j:=0; en début de procédure.
    J'ai eu le même message, que j'ai corrigé comme tu le proposes, sauf que maintenant, il me dit que la valeur affectée à la variable ne sert à rien.

    - Si j'initialise la variable, il me dit que la valeur n'est jamais utilisée.
    - Si je n'initialise pas la variable, il me le reproche.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    J'aurais une interprétation différente du message.

    Ne serait-ce pas parce que APPLICATIONID ne prendra jamais la valeur 10, et de ce fait le bloc de code est supprimer par le compilo ? D'où le message !

    @+

  5. #5
    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 448
    Points
    28 448
    Par défaut
    ça me surprend...j'ai déjà eu alertes injustifiée, mais c'est plus lié à des bloques d'exception...sur un case je suis surpris.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Bonjour à tous,

    Pour répondre à tout le monde en même temps :
    - un code propre pour c'est de n'avoir aucun Avertissement/Conseils.
    - Comme Lung, j'ai le même problème

    Par contre pour ApplicationID c'est une constante (je suis sûr que vous allez bondir ) que je change à la main pour définir la nature du soft (Viewer/Full access).

    Là je suis d'accord, ce n'est surement pas la bonne solution mais coment puis-je faire alors pour compiler une fois en mode Viewer et une autre en mode FullAccess ?

    Amicalement
    Bruno

  7. #7
    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 448
    Points
    28 448
    Par défaut
    ah ben voila, l'erreur est donc juste, avec l'optimisation du code, l'inutilité de j ressort

    alors pour gérer ton truc, il y a les defines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {$DEFINE xxx} 
     
    {$IFDEF xxx} 
     cas 1
    {$ELSE} 
     cas 2
    {$ENDIF}
    mais j'utilise moi aussi l'optimisation du code

    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
     
    {$DEFINE DEBUG} 
     
    const
     DEBUG={$IFDEF DEBUG}TRUE{$ELSE}FALSE{$ENDIF}
     
    begin
    ...
     if DEBUG then ShowMessage('La valeur de i est '+IntToStr(i));
    ...
    // l'autre solution étant de faire
    ...
    {$IFDEF DEBUG}
     ShowMessage('La valeur de i est '+IntToStr(i));
    {$ENDIF}
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Bruno13 Voir le message
    Par contre pour ApplicationID c'est une constante
    C'est bien ca, tu as ce message si ta constante est différente de 10.

    Sinon tu peux utiliser les directives de compilation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {$IFDEF FULLACCESS} ... {$ELSE} ... {$ENDIF}
    [/edit] Grillé par P. Toth ! [/edit]

    @+

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Re-Bonjour,

    voilà mon problème est résolu. En effet c'est bien le fait que APPLICATIONID était une Constante et donc la compilation ne prennait pas en compte le CASE.

    Du coup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      APPLICATIONID : Integer = 1;
    .....
    //  APPLICATIONID : Integer = 7;  // For Deutch program
    ...
    //  APPLICATIONID : Integer = 10; // For Viewer
    ...

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

Discussions similaires

  1. [MySQL] La Session est là mais pas la variable
    Par francoisch dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/05/2009, 19h05
  2. Réponses: 6
    Dernier message: 27/01/2008, 17h18
  3. Est-il possible d'utiliser la fonction TOP avec un argument variable ?
    Par 16-Marco dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 06/03/2007, 22h21
  4. Réponses: 13
    Dernier message: 19/10/2006, 19h14
  5. Avertissement : variable jamais utilisée
    Par La_Bande_A_Zozo dans le forum C++
    Réponses: 3
    Dernier message: 14/05/2006, 17h56

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