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 :

J'aimerais comprendre ces messages


Sujet :

Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut J'aimerais comprendre ces messages
    Lorsque j'execute mon projet, il me rest des messages en bas de mon .pas principal du style :

    [Warning] FenetrePrincipal.pas(621): Variable FichierIni might not have been initialized
    [Hint] FenetrePrincipal.pas(928): Value assigned to 'calculduWidth' never used

    Alors evidement je comprends les phrases des messages.
    Mais cela ne pose aucun problème d'execution.
    De plus je les trouvent faux ces infos.
    Le cout du [Hint].... never used, je pige pas ma variable est bien mis à 0 et ensuite affecté.
    Exemple pour le CalculDuWidth
    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
    34
    Procedure TFormPrincipal.MiseEnPlaceDesTPanelJourDejaExistant;
    Var
    .....
     CalculDuWidth, CalculDuTop, CalculDuHeight: Integer;
    .....
    Begin
     .....
     .....
                    CalculDuLeft := 0;
                    CalculDutop := 0;
                    CalculDuHeight := 0;
                    CalculDuWidth :=0;
    ....
    ....
                    CalculDuLeft := StringGridJour.ColWidths[0]
                                    + (i * StringGridJour.DefaultColWidth);
    
                    CalculDuTop := StringGridJour.RowHeights[0]
                                    + (oldTop * StringGridJour.DefaultRowHeight);
    ....
                      CalculDuHeight := ADOCalendrier.Fields.Fields[9].AsInteger
                                        * StringGridJour.DefaultRowHeight;
                    CalculDuWidth := StringGridJour.DefaultColWidth;
    ....
                    Panel := TRuPanel.Create(Self);
                    With Panel do
                    Begin
                      Parent := Self.StringGridJour;
    ....
                      Left := CalculDuLeft;
                      Top := CalculDuTop;
                      Width := CalculDuWidth-1;
                      Height := CalculDuHeight;
    ...;

    Et pour le [Warning]....not have been initialized
    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
    Procedure TFormPrincipal.RemplirGrid;
    var
    ....
      FichierIni : TInifile;
    begin
    ...
      Try
        FichierIni:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'xxxxxx.ini'); // Ouvre ou crée le fichier
        for i := 1 To 7 do
        Begin
          if FormatDateTime('dddd',Calendrier.Date) = AnsilowerCase(Jours[i]) then repere := i
        end;
        for i:= 1 To 7 do
        begin
    .....
    .....
        end;
      finally
    FichierIni.free;
      end;
    ....
    end;
    Vous pouvez m'expliquer ?

  2. #2
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Pour CalculDuWidth je ne vois pas, mais pour FichierIni, je pense que c'est parce que le .Create peut rater, et la variable ne pas être initialisée.

    Pour éviter ce genre de Warning, moi, je mets la variable à nil avant le bloc try, et tant qu'à faire j'ajoute un "if assigned(truc)" avant le Free.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FichierIni := nil;
    try
    ...
    finally
    if assigned(FichierIni) then FichierIni.free;

  3. #3
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Pour le calculduwidth :

    Il est initialisé à 0, puis on lui affecte une autre valeur.

    du coup, l'init à 0 ne sert à rien , d'où le message...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  4. #4
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    MErci à vous deux.

    Je me coucherais moins c** se soir...

  5. #5
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    pour le warning, tu peux aussi faire comme ca:

    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
    Procedure TFormPrincipal.RemplirGrid;
    var
    ....
      FichierIni : TInifile;
    begin
    ...
      Try
        FichierIni:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'xxxxxx.ini'); // Ouvre ou crée le fichier
        try
          for i := 1 To 7 do
          Begin
            if FormatDateTime('dddd',Calendrier.Date) = AnsilowerCase(Jours[i]) then repere := i
          end;
          for i:= 1 To 7 do
          begin
      .....
      .....
          end;
        finally
          FichierIni.free; //free dans ce try car au moment ou on rentre dans le try, le fichierIni.Create a forcement reussi
        end;
      finally
        //rien car le fichier ini a ete traite. si on arrive ici apres une exception, c'est que l'evaluation d'un des parametre du create, ou le create lui meme, a posé probleme => le fichierini n'est pas affecté.
        // donc ce try n'est pas necessaire si tu fais juste un finally et pas de except
      end;
    ....
    end;

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

Discussions similaires

  1. j'arrive pas à comprendre ce Message d'erreur
    Par casho dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/12/2006, 10h00
  2. J'aimerais comprendre ....
    Par barbarello dans le forum C++
    Réponses: 14
    Dernier message: 24/01/2006, 19h39

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